Назад | Перейти на главную страницу

Скрипты PHP в случайном порядке становятся очень медленно реагировать - Блокировка базы данных?

Я не был уверен, размещать ли это здесь или в stackoverflow, поэтому извиняюсь, если он не в том месте.

У меня около 7 скриптов php, работающих на CentOS VPS. Каждый из этих скриптов связывается с игровым сервером и обрабатывает журналы, с журналами он либо выполняет некоторые запросы к базе данных, либо отправляет информацию обратно на игровой сервер.

У меня проблема, из-за которой некоторые сценарии могут ДЕЙСТВИТЕЛЬНО медленно отвечать на запросы, и я не знаю, с чего начать отладку. Каждый сценарий подключается к своей собственной схеме базы данных, но на том же сервере MySQL. Каждый сценарий будет делать около 4 вставок в секунду и вдвое больше операторов select в соответствующих базах данных. Я думал, что блокировка базы данных может вызвать проблему, но некоторые сообщения консоли, которые считываются из базы данных, отправляются на консоль игровых серверов без проблем каждые 30 секунд, даже если сценарий медленно реагирует на другие команды.

Ни один из скриптов не использует много памяти или мощности процессора. По 0,1% каждая.

Я знаю, что эта информация действительно расплывчата, но я не очень хорошо знаю Linux (на самом деле, верхний предел - это мой предел), и я действительно не знаю, с чего начать отладку.

Спасибо.

Вот несколько вещей, которые вы можете попробовать:

  • Проверьте журналы системы и приложений на наличие соответствующих сообщений. Иногда там регистрируются проблемы / тайм-ауты. Это включает в себя журнал медленных запросов MySQL, о котором упоминал DerfK.
  • Было бы неплохо иметь какую-то систему мониторинга на сервере. Это точно скажет вам, есть ли какие-либо очевидные узкие места (ЦП, память, ввод-вывод и т. Д.). В качестве альтернативы, если проблемы возникают в определенное время, вы можете использовать различные инструменты командной строки top, vmstat, iostat и т. Д. Для проверки состояния системы. Сначала убедитесь, что вы устранили очевидные / распространенные причины (высокая загрузка ЦП, низкий объем оперативной памяти, использование подкачки, блокировки ввода-вывода / проблемы / высокая нагрузка).
  • Если вы можете выполнить эталонное / стресс-тестирование своих скриптов, это может помочь определить источник проблемы. Возможность надежно воспроизвести проблему - большой шаг в ее решении.
  • Подумайте о том, чтобы добавить в свои сценарии базовое ведение журнала. Я бы начал с базовой проверки времени выполнения скрипта и вывел бы что-нибудь, только если для запуска потребовалось более X секунд.
  • Вы упомянули логи парсинга скриптов. Если возможно, попробуйте запустить сценарии для одного и того же набора журналов несколько раз и посмотрите, возникает ли проблема в одном и том же месте или случайным образом в разных местах. Вы также можете попробовать отключить запись, чтобы увидеть, вызваны ли проблемы чтением / синтаксическим анализом или записью (или обоими).
  • Если вы обнаружите, что определенные запросы выполняются медленно, попробуйте запустить / протестировать их вручную в базе данных через клиент командной строки. Это скажет вам, являются ли сами запросы медленными или по какой-то причине они просто выполняются удаленно с PHP.