Есть сайт, у которого посещаемость в среднем 25к-30к в сутки. Недавно сменили сервер, на новом только памяти больше в два раза - оперативки хватает (64гб).
Ситуация такова, что в пиковые часы, процессор не выдерживает нагрузку, и начинает выдавать 500 или 502 ошибку, нагрузка в основном на процессор. Причем
ошибки бывают одна за одной.
На старом сервере количество процессов апача было сильно ограничено размером оперативной памяти, при увеличении количества процессов, они начинали падать
из-за нехватки памяти, но при этом ресурсов процессора и дисков хватало, чтобы во вменяемые сроки обслуживать процессы апача, а также mysql. Заменив сервер, мы увеличили количество процессов апача, они теперь могут поместится в памяти в большем количестве, но при этом эти процессы стали генерировать запросы к mysql в бОльшем количестве, чем до замены сервера, соразмерно увеличению количества самих процессов.
Раньше был сервер послабее
Intel® Core™ i7-4770 Quadcore Haswell
2 x 2048 GB HDD SATA-III
32 GB DDR3
,
перешли на мощнее
Intel® Core™ i7-6700 Quadcore Skylake
HARD DRIVE
2 x 2048 GB HDD SATA-III
RAM
64 GB DDR4
Кто как решает вопрос снижения нагрузки на процессор? Буду благодарен любым предложениям как снизить нагрузку.
Нарисуй схему архитектуры приложения, программных и сетевых компонентов, пожалуйста. Какой именно процесс создаёт нагрузку: СУБД, само приложение или другие компоненты?
akhur: увы, я в php не спец, как и с чем готовить nginx, не знаю. если это невозможно в вашей ситуации, простите.
apache создает на каждое подключение новый поток, учитывая большое количество клиентов, даже сам факт наличия множества запущенных тредов порождает нагрузку на CPU (переключение между потоками). nginx более эффективно работает с сокетами, и нагрузка на проц должна быть ниже.
У вас теперь база не справляется, скорее всего из за медленных дисков или нехватки памяти.
Попробуйте ее оптимизировать под новое количество подключений от апача,