Я читал следующую статью:
И интересно, есть ли что-нибудь еще, что мне нужно знать о настройке Linux для обработки 1 миллиона TCP-соединений? Пока что я сузил его до следующего:
Что еще мне нужно настроить? (это для большого 64-битного сервера EC2)
-редактировать-
Это не apache, это FYI-сервер с пользовательским кодом на основе libev. Он отлично масштабируется до 1 мил, меня беспокоит ядро :)
У вас настроено большинство настроек, которые я бы установил (и должен был установить). Одна вещь, которую я обнаружил при таком масштабировании, заключалась в том, что в вашей среде всегда будет что-то особенное, о чем никто другой не упомянул. Чтобы поймать это, вам нужно убедиться, что вы смотрите и предупреждаете о:
Еще одна вещь, с которой вы можете столкнуться, - это проблемы со значением HZ. В наших системах FreeBSD мы увеличили это значение. Я исследовал другой вопрос о linux и столкнулся со случаем, когда очереди сокетов очищаются в зависимости от значения HZ:
Соединения TIME_WAIT не очищаются по истечении периода ожидания
Что касается комментария, я не думаю, что FreeBSD будет лучше в этом, они оба нуждаются в огромной настройке для работы. Мы используем FreeBSD, потому что ящики напрямую подключаются к Интернету, а OpenBGPD в настоящее время является лучшей доступной реализацией BGP с открытым исходным кодом.
У меня возникли проблемы с настройкой параметров для каждого пользователя, я продолжал изменять количество файлов в limits.conf, но тогда он не позволял мне снова войти в систему, мне пришлось закрыть экземпляр ec2. С тех пор я обнаружил, что 1024 * 1024 - это максимум, который вы можете поместить в limits.conf, больше, и вы его пропустите:
echo "* soft nofile 1048576" >> /etc/security/limits.conf
echo "* hard nofile 1048576" >> /etc/security/limits.conf
Помимо этого и дополнений к sysctl, упомянутых в ссылках на блог mochiweb, есть ли что-нибудь еще, что мне нужно сделать?
Большое спасибо, ребята. Я действительно хочу посмотреть, смогу ли я подтолкнуть этот сервер к обработке 1мил соединений ...
Это зависит от характеристик сервера и типа контента, который он обслуживает. Это может быть вообще невозможно (одновременно, верно?), Если он обслуживает активный контент и медиа. База данных и небольшие веб-сайты подойдут. В конфигурации apache попробуйте запустить множество рабочих / дочерних потоков. В самом ящике просто проверьте, сможет ли Apache с этим справиться. Если apache может, но не коробка, возможно, кто-то еще может помочь с этим. Сожалею. Удачи.
Да, извините, что не прочитал его полностью.