веб-страница показывает 507 недостаточно памяти время от времени - PullRequest
0 голосов
/ 22 октября 2018

У меня есть сайт и работает.Веб-сайт нормально работал на localhost без таких ошибок, но после того, как я разместил его в сети, он начал показывать страницу с недостаточным объемом памяти 507, когда два или три пользователя использовали одну и ту же страницу одновременно.
Например, есть веб-страница chat.php, котораязапускает ajax-запрос для обновления чатов каждые 700 миллисекунд.Рядом два запроса ajax продолжают проверять сообщения и уведомления.Эти ajax-запросы выполняются с использованием метода javascript setInterval.При одновременном доступе к этой странице двух или более пользователей страница не загружается и показывает ошибку, а иногда на странице отображается ошибка 429 слишком большого числа запросов.Таким образом, в то же время максимум 4 запроса могут происходить на стороне пользователя, и это также, если сценарии выполняются одновременно.Может ли это произойти из-за ограниченных процессов входа?Хостинг предоставляет мне 10 ограниченных процессов входа по умолчанию.Пожалуйста, ответьте и оставьте комментарий, если вы хотите, чтобы я опубликовал код метода setInterval, хотя я думаю, что проблема здесь в другом.

1 Ответ

0 голосов
/ 22 октября 2018

Например, существует веб-страница chat.php, которая выполняет запрос ajax для обновления чатов каждые 700 миллисекунд.

Эти запросы ajax выполняются с использованием метода setInterval javascript.

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

Таким образом, одновременно у пользователя может возникнуть максимум 4 запросаконец и это также, если сценарии выполняются одновременно.

Хостинг предоставляет мне 10 процессов ограниченного ввода по умолчанию.

Пожалуйста, найдите время, чтобы прочитать (ваше собственное) кавычки.

Вы заявляете, что вы AJAX-сервер каждые 700 мс, и вы делаете это с помощью setInterval.Существует максимум 4 запроса на пользователя и 10 в общей сложности.Если есть 2 или более посетителя, все идет наперекосяк.

Я думаю, что здесь могут возникать проблемы из-за нескольких вещей:

Вы достигли лимита в 10 запросов из-за нескольких пользователей.

Когда 2 пользователя нажимают на 4 запроса на 8, если что-то еще делает запросы на сервере, вы очень быстро достигаете максимума 10. С 3 пользователями с 4 запросами ваш на 12, который в соответствии с вашим вопросом достигает вашегопредел.

Возможно, вы используете DOS для своих собственных серверов.

Использование setInterval для выполнения запросов AJAX - плохо . очень плохо .Проблема заключается в том, что если вы запрашиваете свой сервер каждые 700 мс, а серверу требуется более 700 мс для ответа, вы складываете запросы.В конечном итоге вы достигнете любого ограничения с одним пользователем.(хотя в некоторых случаях браузер может защитить вас).

Как исправить

Я думаю, 10 подключений (если на самом деле это 10 подключений,что мне непонятно) очень низко.Однако вы должны рефакторинг вашего кода, чтобы избежать использования setInterval.Вы должны использовать что-то вроде Promise, чтобы отслеживать, когда запросы заканчиваются, прежде чем планировать новый, чтобы предотвратить накопление стеков запросов.Имейте в виду, что вы никогда не должны использовать setInterval, если у вас нет веских причин для этого.Почти всегда лучше использовать более интеллектуальное планирование.

Возможно, вы захотите повысить эффективность этих запросов, можете ли вы объединить вызов для проверки сообщений и уведомлений?

...