Сайт не работает после выполнения действия PHP - PullRequest
1 голос
/ 26 марта 2012

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

Страница просто постоянно загружается.Итак, я пытаюсь перейти на основной сайт.Это теперь постоянно загружается без разрешения.Примерно через день сайт возвращается, поэтому, возможно, существует какой-то автоматизированный процесс, который убивает задачи по истечении определенного времени.У меня такой вопрос:

Могу ли я убить эту задачу или выполнить какое-либо действие, чтобы я мог перейти на сайт, не дожидаясь полного дня?При необходимости я могу углубиться в детали.

Спасибо.

По запросу, более подробная информация.

PHP-скрипт извлекает текстовую информацию из базы данных.,На основании этой информации PHP-скрипт вызывает исполняемую программу.Вывод из исполняемого файла выводится на экран.

Я проверил список процессов mysql и нашел процесс, который занял особенно много времени.Я убил его, поэтому может быть, что исполняемый файл постоянно работает.Если да, то как бы я определил это, и если нет, то что-нибудь еще могло бы быть?Благодарю.

Решено : Хорошо, так что в основном совет Майка Пурселла, который должен был показать список процессов процессов mysql и убить все те процессы, которые я видел, которые занимали достаточно много времени.Как только это будет сделано, нужно было просто перезапустить mysql и httpd.Еще раз спасибо всем, кто прокомментировал.

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Похоже, что это таинственное действие могло привести к выполнению неоптимизированного запроса, что может привести к зависанию других запросов до тех пор, пока не завершится выполнение неверного запроса. Если у вас есть доступ к серверу mysql через терминал, вы можете выполнить следующие команды, чтобы завершить длительный запрос:

mysql> show processlist;

Эта команда выведет все запущенные запросы. Обратите внимание на столбец time, в нем будет отображаться время в секундах того, как долго выполнялся запрос. Теоретически у вас никогда не должно быть запросов, выполняющихся в течение нескольких секунд, но некоторые запросы могут занимать до 10 минут в зависимости от запроса и набора данных. Другой столбец, на который следует обратить внимание, - это столбец id, с этим значением вы можете завершить запрос вручную (так же, как и процесс на компьютере с Linux).

mysql> kill 387 # 387 is just an example

Теперь, когда вы снова запустите команду show processlist, этот запрос должен исчезнуть из списка процессов.

2 голосов
/ 26 марта 2012

Если сайт заблокирован из-за интенсивного процесса MySQL или если процесс MySQL вышел из строя, лучшее, что вы можете сделать, - это изолировать процесс от его собственного потока базы данных, чтобы обычные таблицы не блокировались.

Другой вариант - переключить некоторые из ваших баз данных (при условии) MyISAM на движок InnoDB, если это может работать.Пакетные вставки будут выполняться медленнее, а сигнатура производительности будет отличаться, но вы не подвергнетесь такой серьезной блокировке.

2 голосов
/ 26 марта 2012

Похоже, вы сделали свой собственный сайт!

Может быть, эта веб-страница должна быть не веб-страницей, а задачей, выполняемой вручную или через cron? Иначе любой сможет найти эту страницу и убить ваш сайт, когда захочет ...

Если этой программе нужно так много ресурсов, вы должны как-то ограничить ее: попытаться оптимизировать ее, попытаться ограничить разрешенные ей ресурсы (я не знаю, как это сделать, я просто знаю, что это возможно: s)

Если проблема уже есть, вы можете попытаться убить процесс (ps aux | grep <processname", затем kill -9 processid) или запрос, если проблема возникла из MySQL (внутри вашего клиента mysql, show processis t; затем kill <query n°>). Сначала попробуйте SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...