Вылазят различные косяки при настройке apache. В инете найти решения не получается. Прошу советов.
1. Что делать, чтобы уменьшить потребление оперативной памяти? Стоит ли отключать некоторые включённые по умолчанию модули и прописывать какие директивы в httpd.conf? Я отключил cgi_module и cgid_module, сайтов, требующих cgi, у меня всё равно нет. Но вот запускаю я htop и вижу, что у меня висят в памяти 5 процессов httpd, каждый из которых жрёт около 25000 оперативной памяти и 500M виртуальной и это при нулевой нагрузке. Зачем так? Мне казалось сколько клиентов подключены к серверу столько и процессов должно быть, ну ещё должны быть резервные процессы запущены, чтобы как только подключится новый клиент, чтобы сайт у него тут же грузился без ожидания пока запустится новый процесс. О мультипроцессинговых моделях слово, заметил что по умолчанию стоит worker, если версия apache старая то itk, а какая модель лучше: itk, worker, prefork или event? Так сайтов у меня сейчас 5, захожу на них только я, но один будет раскручиваться, планируется нагрузка 10-50 хитов в минуту. И вообще достаточно ли VDS с 512 Мбайт памяти для развёртывания на нём LAMP или нужно минимум гигабайт? А так я, прочитав некоторые статьи в Интернете и руководствуясь собственными измышлениями, прописал некоторые директивы для worker, насколько так правильно?
KeepAlive On
KeepAliveTimeout 30
StartServers 1
MinSpareServers 1
MaxSpareServers 4
Serverlimit 4
MaxClients 4
MaxRequestsPerChild 30
2. Бывает клиент запрашивает один сайт, а ему выдаётся другой, при этом запрос возвращает нормальный код 200. Например клиент заходит не по имени виртуального хоста, а по ip-адресу, ему в этом случае должна выдаваться страница-заглушка, но вместо этого ему выдаётся сайт, чьё имя первое в алфавитном порядке. Я уже спрашивал о том как с этим бороться здесь www.linux.org.ru/forum/general/13889591 мне посоветовали создать виртуальный хост с именем 000-default и страницу-заглушку расположить на нём. Я так и сделал, хотя считаю этот метод костылём, ведь по правильному путь к странице-заглушке должен быть указан в директиве DocumentRoot, расположенной вне блоков до них и всё должно работать. Сегодня обнаружился ещё один косяк, я создал поддомен, но при попытке зайти на него - грузится основной сайт. Для пояснения выкладываю фрагменты конфигов:
/etc/httpd/conf/httpd.conf:
IncludeOptional conf.d/*.conf
/etc/httpd/conf.d/m????????????.info.conf:
<VirtualHost *:80>
ServerName m????????????.info
ServerAlias www.m????????????.info
DocumentRoot "/var/www/m????????????.info/html"
DirectoryIndex index.html index.htm index.php
AddDefaultCharset UTF-8
ErrorLog "/var/www/m????????????.info/error.log"
CustomLog "/var/www/m????????????.info/access.log" common
<Directory "/var/www/m????????????.info/html">
AllowOverride All
Options -Indexes
</Directory>
</VirtualHost>
/etc/httpd/conf.d/ver21022018.m????????????.info.conf:
<VirtualHost *:80>
ServerName ver21022018.m????????????.info
DocumentRoot "/var/www/ver21022018.m????????????.info/html"
DirectoryIndex index.html index.htm index.php
AddDefaultCharset UTF-8
ErrorLog "/var/www/ver21022018.m????????????.info/error.log"
CustomLog "/var/www/ver21022018.m????????????.info/access.log" common
<Directory "/var/www/ver21022018.m????????????.info/html">
AllowOverride All
Options -Indexes
</Directory>
</VirtualHost>
Ответы
Обывательское мнение по первому вопросу такое: если упираетесь в память, то на конфигах апача много не выиграть. Сколько-то нужно скриптам сайта (легко может быть несколько десятков мегабайт на генерацию одной страницы). Сколько-то нужно субд. Плюс страница может генерироваться дольше секунды. Плюс есть регулярные процедуры и так далее. Экономия нескольких мегабайт на процессах апача здесь не решает. Сервисы будут регулярно падать и регулярно будут пятисотые ошибки.
И что вы посоветуете в итоге? Увеличивать память до 1 Гбайт, а то и до 2? Но правильно понимать как работают мультипроцессные модели тоже нужно.
Да, увеличьте. Это не такая проблема как у меня когда 256 Гб съедает и увеличивать физически некуда.
Непонятно как оно вообще у вас запустилось на таком объеме памяти т.к. у меня в простое 6 Гб используется.
1.1) у вас дочерние процессы (неактивные) не убиваются со временем
1.2) если php идёт как модуль то проверьте как он кэширует - при каждом дочернем процессе он будет забирать память
2) нормальное явление , есть понияте дефолт хост (первый в конфиге) он и открывается если не находит домен или не совпадает протокол (порт)
поможем решить все вопросы и сопроводить дальше https://u-host.net
Перейти на nginx не выйдет?
Отправить комментарий