Какой дистрибутив Linux выбрать для хостинга Apache + PHP сайтов?
В основном надо хостить аудио-записи конференций.
Трафик не очень большой (4000 посетителей в месяц по GA), но материалов около терабайта.
Для этого дела есть самописная CMS, которая умеет эти записи проигрывать нужным способом искать и т.д.
Требования: PHP 7, Apache, MySQL.
Я взял дедик на OVH (32GB RAM, 8cores), накатил на него Hyper-V, а в нём - Ubuntu 18.04 VM (8GB RAM, 3cores).
И оно тормозит. Причём похоже из-за сети. Один из симптомов - это иногда сайт открывается быстро, а иногда - первую страницу ждёшь секунд 10-20!
Пока разбирался, увидел, что у меня висит куча соединений в состоянии CLOSE_WAIT:
root@ub18s:/home/slavik# netstat -tupn | grep CLOSE_WAIT
tcp 1 103452 142.44.185.104:443 213.180.203.53:58602 CLOSE_WAIT 30305/apache2
tcp 1 99258 142.44.185.104:443 213.180.203.53:39694 CLOSE_WAIT 30937/apache2
tcp 1 29358 142.44.185.104:443 37.9.113.126:41087 CLOSE_WAIT 32766/apache2
tcp 1 114636 142.44.185.104:443 213.180.203.53:54569 CLOSE_WAIT 30338/apache2
...
И это нехорошо. И про это есть вопросы на StackOverflow, но решения я не нашёл - похоже на проблему сетевого стэка Убунты.
Ну я попробовал и задеплоил ещё одну VM, теперь CentOS 7 (8GB, 3 cores).
Работает всё класс, быстро, висяков CLOSE_WAIT нету.
Но в CentOS постоянно висит один процесс - kswapd0, которые нагружает одно ядро на 100%. Это вроде бы связано со swapping memory. Тоже пробовал всякое, разные настройки - не одолел, тоже похоже на проблему ядра ОС.
Хотя на работе это вроде не отображается - ничего вроде бы не тормозит, но как-то неприятно.
Вот теперь думаю - попробовать Debian? 9.6?
Или есть какая-то конфигурация, которую народ посоветует?
P.S. Поставил Debian 9.6 + Nginx + PHP-FPM. Вот уже около месяца работает. Очень стабильно.
SlavikF, если ваши записи отдаются статикой, без обработки пыхом - хотя бы перед Апачем Нджинкс просто-таки обязателен.
А если они отдаются через пых - соответственно, рассмотреть возможность отдавать их статикой ;)
Максим Федоров, оно тормозит. Причём похоже из-за сети. Один из симптомов - это иногда сайт открывается быстро, а иногда - первую страницу ждёшь секунд 10-20!
SlavikF Перед тем, как дойти до wireshark и сетевого стека, вы хотя бы помониторили состояние процессов apache?
Проблем с прикладным ПО, всегда куда больше чем с системным, на порядки. Начинать лучше с него. Благо, у apache есть вполне доступный способ получения нужной статистики - mod_status.
Зачем вам Hyper-V? Лишние накладные расходы на ровном месте.
Дистрибутив особой роли не играет, на самом деле. Сетевой стек один и тот же, только некоторые настройки по умолчанию различаются, но их вполне и изменить можно.
А вот проблема у вас, вероятнее, не в CLOSE_WAIT, всё же, и не в сетевом стеке, а в том, что все процессы апача заняты обработкой существующих запросов, т.е. отдачей ваших аудио данных. И лучше бы это делать не с помощью Apache вовсе.
Какая разница: Apache или Nginx, если проблема на уровне ядра ОС?
Если вам кажется, что проблема на уровне ядра ОС, то во всех дистрибутивах линуксах - ядро линукса.
Нет смысла менять дистрибутив, разбирайтесь с вашей проблемой на текущем дистрибутиве.
Конкретно в своей практике сталкивался с проблемой в модуле apache remoteip, но это очень специфичный случай был. Не увидел в вашем вопросе отчёта с вкладки Network браузера. Там есть параметр TTFB, который может косвенно указать с какой стороны проблема. Ещё бывает apache долго думает, когда режется частота процессора, но это больше для хостинга актуально. Ну и время выполнения php не помешает замерить.