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

как мне настроиться на ежедневный трафик

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

Все тренеры отправляют свои региональные заявки через мой сайт и, как правило, ждут, когда наступит срок, чтобы сделать это. Это было вчера, и мой сайт, который ни разу не падал за весь сезон, останавливался по крайней мере 4 раза в течение дня. Он никогда не уходил больше часа и всегда возвращался. (Я выпустил перезапуск apache на всякий случай).

Мой вопрос: как я могу настроить Apache, чтобы справиться с однодневным всплеском пользователей? Нет смысла платить за дополнительное оборудование на целый год, когда мне нужно только один день повысить производительность. Я пробовал читать о prefork.c и worker.c, но я просто недостаточно хорошо их понимаю. Вот моя текущая конфигурация:

<IfModule prefork.c>
 StartServers       1
 MinSpareServers    1
 MaxSpareServers    5
 ServerLimit       10
 MaxClients        10
 MaxRequestsPerChild  4000
 </IfModule>

 <IfModule worker.c>
 StartServers       1
 MaxClients        10
 MinSpareThreads    1
 MaxSpareThreads    4
 ThreadsPerChild     25
 MaxRequestsPerChild  0
 </IfModule>

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

ОБНОВИТЬ:

  728 root      20   0  317m  20m 7752 S  0.0  2.7   0:49.58 httpd
19700 webuser   20   0  489m  37m 6792 S  0.0  4.9   0:00.72 httpd
19737 webuser   20   0  493m  42m 6624 S  0.0  5.5   0:00.59 httpd
19756 webuser   20   0  494m  43m 6604 S  0.0  5.7   0:00.58 httpd
19758 webuser   20   0  495m  44m 6780 S  0.0  5.8   0:00.97 httpd
19777 webuser   20   0  493m  42m 6620 S  0.0  5.5   0:01.08 httpd

Взглянул на ресурсы, и я не уверен, на что я смотрю. Процесс, принадлежащий пользователю root, должен быть тем, который запускает Apache. Созданы ли те, которые принадлежат веб-пользователю, самим Apache? Почему они такие большие? Сервер имеет около 3 / 4G RAM, если я считаю 1/2 для Apache, а процессы содержат 40M, как я могу оценить возможное количество одновременных пользователей?

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

  1. Прежде всего, проверьте, какой модуль mpm использует ваш Apache, чтобы вы знали, какой из двух блоков конфигурации, которые вы разместили, вам нужно настроить:

    apachectl -D DUMP_MODULES | egrep -i "prefork|worker"

  2. Если вы находитесь в режиме предварительной вилки и запускаете какое-то приложение на PHP через mod_php, причина того, что ваши процессы Apache со временем становятся огромными, заключается в том, что все больше и больше php-кода и данных загружаются модулем в оперативную память каждый раз, когда приложение получает новые запросы от клиентов. Чтобы уменьшить размер процессов, попробуйте уменьшить MaxRequestsPerChild примерно до 500. Каждый процесс будет завершен после обслуживания MaxRequestsPerChild запросов, и будет запущен новый (который, надеюсь, будет иметь меньший объем памяти). Это связано с затратами на производительность, поскольку новые процессы будут повторно запускаться чаще, но поскольку вы пытаетесь поддерживать работу службы, а не делать ее молниеносной, это должно быть приемлемым компромиссом.

  3. Вы не хотите, чтобы ваш веб-сервер менял местами: убедитесь, что максимальное потребление ОЗУ во время каждого процесса Apache ServerLimit или MaxClients никогда не превышает 75% доступной памяти сервера.

  4. Если можете, перейдите на AWS или другого поставщика облачных услуг: AWS может автоматически увеличивать и уменьшать масштаб вашего сервера по заранее определенному расписанию. «Автомасштабирование» - это облачная змеиная нефть в 90% реальных сценариев, но ваш случай, возможно, один из немногих, которым эта функция действительно может принести пользу. Вы не должны упускать возможность.

  5. Если вы сталкиваетесь с такими проблемами при обслуживании 70 клиентов на сервере с 4 ГБ ОЗУ, я подозреваю, что что-то не так, но, опять же, вы предоставили недостаточно подробностей, чтобы сделать что-либо, кроме обоснованного предположения.