Если "помещенными базами данных в RAM" Вы обращаетесь к своему предыдущему вопросу о псевдодисках на Windows Server 2008, ответ является снова тем же: SQL Server имеет превосходное кэширование, Вы не должны смешивать с псевдодисками.
Показать ваши настройки apache MPM и настройки keepalive.
Вероятно, это плохая комбинация этих параметров.
РЕДАКТИРОВАТЬ: Я только что видел, как вы упомянули php.
Если вы используете именно mod_php, на этой машине лучше иметь 64 ГБ памяти, иначе вы никогда не сможете поддерживать 2500 подключений.
Также имейте в виду, что в MPM prefork каждый процесс будет иметь PHP в своей области памяти (каковы его настройки ограничения памяти?). Вы можете попробовать переключиться на рабочий MPM, для чего может потребоваться немного другой модуль PHP.
Также стоит удаленно избавиться от посторонних модулей в конфигурации Apache.
По моему опыту, такие вещи запускаются такими вещами, как сканер поисковой системы или такие вещи, как конфликты ARP. Или уровни трафика в какой-то связанной части сети.
Вы можете найти sar полезным ... не самым дружелюбным, но определенно полезным.
Возможно, также связаны. Sar может сказать вам (если вы настроите его для записи активности диска), каково среднее время ожидания io. Вы также можете посмотреть время ожидания ввода-вывода в верхней части (это процент, прочитайте, что это на самом деле означает). Это может иметь большое значение, если вы используете SAN или виртуальную среду.
Сначала: проверьте Максимальное количество открытых файлов
для процесса. Активное соединение сокета считается открытым файлом. cat / proc / ### / limits
- хороший способ проверить эффективное значение для другого процесса. Вы можете получить список открытых файлов с помощью lsof -p ###
, где ### - идентификатор процесса вашего веб-сервера. Вы можете сравнить lsof -p ### | wc -l
, чтобы увидеть, насколько близко вы приближаетесь к пределу. Вы также должны видеть сообщения в error_log apache, если вы достигли предела.
Вам нужен дескриптор файла для каждого соединения с сокетом, а также для каждого cgi-скрипта или ссылки на файл данных. Для 920 MaxClients необходимо настроить не менее 4000 файлов для процесса httpd. Вы можете увеличить количество файлов, добавив файл в /etc/security/limits.d/ со следующим содержимым. Убедитесь, что имя пользователя соответствует тому, что вы используете для своего веб-сервера.
apache soft nofile 10000
apache hard nofile 10000
Во-вторых: если ваша проблема исчерпана,вы можете настроить некоторые параметры IP в /etc/sysctl.conf. (Начиная с net.ipv4.tcp_fin_timeout
). Обычно это проблема только при большом количестве очень мелких соединений. Многие сокеты TIME_WAIT являются одним из индикаторов этого, но это указывает на исчерпание порта только тогда, когда они сопровождаются ошибками в системном журнале о возможном переполнении SYN
и отправке файлов cookie
. Вы также должны убедиться, что ваш сервер защищен брандмауэром, который может предотвратить вредоносные атаки SYN.
Вы должны включить расширенный статус mod_status ( http://httpd.apache.org/docs/2.2/mod/mod_status.html#extendedstatus ), чтобы отслеживать текущие хосты и обрабатываемые запросы. Я думаю, что есть скрипт (ы) / страница (ы), который требует слишком много времени для освобождения соединения и заставляет соединения складываться в стек.