Google Computer Engine блокирует соединения с Apache (брандмауэр обнаруживает флуд?) - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть сайт, развернутый на Google Computer Engine с apache2. Все нормально, пока я не отправлю уведомления от onesignal. Когда у меня более 1 тыс. Запросов уведомлений в минуту, брандмауэр (я думаю) блокирует входящие соединения для портов 80 и 443 на несколько минут, после этого все в порядке. GCE думает, что наводнение?

Есть идеи? Заранее спасибо.

1 Ответ

0 голосов
/ 05 мая 2018

Для веб-push-уведомлений требуются фоновые работники, известные как работники сферы обслуживания , для отображения уведомлений, когда ваш сайт не открыт. Эти фоновые работники являются обычными файлами JavaScript, которые запускаются в специальной среде браузера. Код в вашем сайте OneSignalSDKWorker.js - сервисный работник.

Браузер каждого подписчика загружает сценарий из OneSignalSDKWorker.js, чтобы сохранить локальную копию для выполнения, и проверяет наличие обновлений рабочего сценария, периодически повторно загружая OneSignalSDKWorker.js.

Когда:

  • Пользователь заходит на ваш сайт
  • Или пользователь получает push-уведомление

OneSignalSDKWorker.js будет загружаться с вашего сайта для проверки обновлений, хотя эта проверка выполняется не чаще одного раза в 24 часа, чтобы предотвратить слишком большое количество запросов на ваш сайт.

Периодические проверки являются обязательными и выполняются браузером, а не нашим SDK. Время между проверками не может превышать 24 часа.

Так как браузер каждого подписчика периодически проверяет наличие обновлений, это может привести к увеличению нагрузки на трафик.

Некоторые способы уменьшить нагрузку на ваш сервер:

  • Ресурсы хоста в других местах, если это возможно

Распространенной оптимизацией является отправка значка уведомлений с хоста изображений, такого как Imgur, вместо вашего сайта.

  • Использование уведомлений на основе часовых поясов

  • Использование обратного прокси-сервера, такого как CloudFlare

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

  • Сегментирование доставки уведомлений

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

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