Недавно мой процессор сервера Apache был на 100% (весь день, то есть). Кажется, я нашел свою проблему.
На странице пользователь имеет возможность щелкнуть кнопку и отправить запрос POST в файл PHP на моем сервере. Иногда файл PHP занимает ДЛИННУЮ (и я имею в виду ОЧЕНЬ длинное) время, чтобы ответить или иногда вообще не реагирует:
function buttonFunction() { $.post("http://ipaddress/core/file.php",{username:username, password:pword, coins:coins}, function(data) { // Stuff }); }
Гипотеза 1:
Я считаю, что иногда люди могут снова щелкнуть эту кнопку (пока она пытается получить результат / ответ от file.php
из предыдущего клика) и, следовательно, вызывает два одновременных процесса с PHP на сервере Apache, что приводит к более высокому использованию ЦП ( Я думаю, что это то, что происходит, исправьте меня, если я ошибаюсь, потому что я новичок в этом сервере).
Гипотеза 2:
Еще одна вещь, которая может быть причиной высокой загрузки процессора (я считаю), является пользователем, обновляющим страницу, пока она все еще пытается получить результат / ответ от file.php
. Через 12 секунд (без ответа / результата) появляется сообщение: «Пожалуйста, обновите, если это займет слишком много времени». В этом случае (после обновления страницы) пользователь снова пытается отправить запрос на file.php
пока старый может работать, что приводит к более высокому использованию ЦП (опять же, я думаю , что так происходит, исправьте меня если я ошибаюсь, потому что я новичок в этом сервере).
Обоснование:
Я говорю это, потому что на моем сайте он может сказать, что в сети есть только 12 человек (и, возможно, 12 человек отправляют почтовые запросы), однако, когда я запускаю top
команду PuTTY, чтобы посмотреть, какие процессы в настоящее время работают, она показывает почти 30-40 + процессы (некоторые принимают до 17 минут ).
Итак, есть ли способ, чтобы я мог прервать запрос при обновлении (если он все еще продолжается) или нажатием кнопки (опять же, если запрос все еще продолжается)? На самом деле, может кто-нибудь подтвердить или опровергнуть, если мои гипотезы (особенно гипотеза 2) верны – если они фактически вызывают высокий CPU? Кроме того, если у кого-то есть идея более эффективного способа, которым я могу это сделать (отправка этих запросов), это будет высоко оценено.
Изменить 1:
Я могу исправить возможную проблему, изложенную в моей первой гипотезе. Однако может ли кто-нибудь попросить подтвердить или опровергнуть, если моя вторая гипотеза верна / действительна?