Налагодження роботи процесів у Linux за допомогою strace
Піду трохи в бік від Mac OS X. Не знаю, чи ви помітили, але в неділю я переключив блог на більш потужний VPS. Я давно хотів провести оптимізацію, і нарешті це зробив.
Спочатку я використовував чистий Apache, потім перейшов на чистий nginx, потім на зв'язку nginx як frontend і apache як backend. Але не зупинився на цьому та покращив продуктивність за рахунок застосування nginx cache. Дякуємо за рекомендації Денису (Juev) та Дімі (Snupt). Деталі я опишу в окремій статті, вказавши конкретні статті, думки та проблеми. Тепер залишилося закінчити, провівши мініфікацію CSS і JS - цим займуся, як тільки з'явиться час.
Мій сайт працює під Ubuntu Server. У процесі налаштування виникали нюанси, які важко діагностувати, не розуміючи, що саме відбувається. І якщо під Mac OS X я активно для цього використовую dtrace, а під FreeBSD колись запускав ktrace, то під Linux мені не доводилося нічого робити.
Час прийшов та мені допоміг strace.
Суть питання була в тому, що я ставив додатковий модуль ngx_cache_purge за рецептом, що описується в статті WordPress nginx proxy cache”, але при зверненні до потрібної URL замість інформації про виконану дію я отримував код 404. або модуль просто не працював. Був варіант вставляти директиви налагодження в код модуля та перекомпілювати nginx, але це було трудомістко та неоперативно.
Процес налагодження за допомогою strace простий. Спочатку потрібно визначити pid'и процесів, що цікавлять:
А потім підключитися до цих процесів:
Видно процес роботи програми і з нього я побачив, що 404 виникає через відсутність у кеші /var/lib/nginx/cache файлу. Тобто. модуль працює, і після вивчення конфігурації я знайшов друкарську помилку в описіключа кешування. Користь очевидна. Рекомендую.