как настроиться на однодневный трафик в год [дубликат]

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

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

Мой вопрос: как я могу настроить Apache, чтобы справиться с однодневным всплеском пользователей? Нет смысла платить за большее количество оборудования в течение целого года, когда мне нужно только один день повышения производительности. Я пробовал читать о префорке.c и рабочем.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. Являются ли те, что принадлежат webuser, порожденными самим Apache? Почему они так большие? Сервер имеет около 3/4G оперативной памяти, если я рисую 1/2 для Apache, а процессы вмещают 40M, как я могу оценить количество одновременных пользователей?

1
задан 29 January 2018 в 16:51
1 ответ

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

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

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

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

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

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

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

0
ответ дан 4 December 2019 в 04:15

Теги

Похожие вопросы