Как понять, из-за чего забивается вся оперативная память на VDS?
У меня на VDS расположено несколько сайтов и возникает проблема с полным забиванием оперативной памяти и swap (примерно так распределяется):
1730MB php
983MB apache2
763MB mysqld
62MB core
Сайты соответственно, перестают работать, временно помогает перезапуск веб-сервера, но со временем по новой забивается память. Вот собственно и не понятно, то ли скрипты не оптимизированы php, то ли это могут не завершаться ненужные процессы?
Ограничивайте максимальный объём памяти и количество процессов PHP, ограничивайте доступную базе память. Смените апач на нгинкс, фигли он целый гигабайт-то занимает?
Спасибо, часть сайтов работает в режиме FastCGI (Apache), часть просто на нем, согласен, со временем надо поменять на nginx+php-frm скорее всего всё... А как ограничить, это настройки php?
Нужно начать использовать инструменты мониторинга и профилирования приложения на предмет потребления памяти и производительности. Для каждого ЯП они свои. Плюс есть инструменты для профилирования Linux. Однако я бы посоветовал переходить к ним лишь после тщательного анализа приложения средствами языка.
Начал xhprof, вот такая примерно картина по одной странице, но что-то выявить прям конкретного виновника не получается, на сайте wordpress + elementor (визуальный редактор):
Overall Summary
Total Incl. Wall Time (microsec): 18,780,780 microsecs
Total Incl. CPU (microsecs): 10,446,483 microsecs
Total Incl. MemUse (bytes): 99,814,312 bytes
Total Incl. PeakMemUse (bytes): 100,826,048 bytes
Number of Function Calls: 4,346,710
Просто еще не понятно, какие должны быть эти цифры, может вы подскажете?
Роман Мирр, Это главный файл сайта index.php (в его начале - начало профилирования, в конце - соответственно завершение), т.е. полностью все функции, которые используются. Правильно я понимаю, что условно 10 таких сайтов будут занимать уже Гб, в этом и проблема. что 100Мб это много?