Отстраняване на грешки в Linux процеси със strace
Ще се отдалеча малко от Mac OS X. Не знам дали сте забелязали, но в неделя превключих блога си на по-мощен VPS. Отдавна исках да оптимизирам и най-накрая го направих.
Първоначално използвах чист Apache, след това преминах към чист nginx, след това към куп nginx като frontend и apache като backend. Но той не спря дотук и подобри производителността с помощта на nginx кеша. Благодаря за препоръките на Денис (Юев) и Дима (Снупт). Ще опиша подробностите в отделна статия, като посоча конкретни статии, мисли и проблеми. Сега остава да довърша с минимизиране на css и js - ще го направя веднага щом имам време.
Моят сайт работи с Ubuntu Server. По време на процеса на настройка имаше нюанси, които беше трудно да се диагностицират, без да се разбере какво точно се случва. И ако под Mac OS X активно използвам dtrace за това и под FreeBSD веднъж стартирах ktrace, тогава под Linux никога не съм правил нещо подобно.
Времето дойде и strace ми помогна.
Същността на въпроса беше, че инсталирах допълнителния модул ngx_cache_purge според рецептата, описана в статията за кеша на WordPress nginx proxy ”, но когато влязох в желания URL, вместо информация за предприетото действие, получих код 404. Нямах представа дали това е причинено от проблем с конфигурацията или модулът просто не работи. Имаше опция за вмъкване на директиви за отстраняване на грешки в кода на модула и повторно компилиране на nginx, но това отнемаше време и беше бавно.
Процесът на отстраняване на грешки със strace е прост. Първо трябва да определите pids на процесите, които представляват интерес:
И след това се свържете с тези процеси:
Процесът на приложението е видим и от него видях, че 404 възниква поради липса на файл в /var/lib/nginx/cache кеша. Тези. модулът работи и след проучване на конфигурацията открих правописна грешка в описаниетоключ за кеширане. Ползата е очевидна. Препоръчвам.