Я сделал некоторый нагрузочный тест под Ubuntu10.10 с Осадой 2.6.9, сценарий, который я использовал следующим образом,
siege -c 900 -r 30 -i -f urls.txt
, но я получил тонны сообщений об ошибках как
error: socket: unable to connect sock.c:222: Operation already in progress or socket timeout
Я заметил, что время отклика большинства запросов является меньше чем 0,2 secs, но через некоторое время, время отклика некоторых запросов, увеличенное до 5 secs и паузы периодически, происходило,
Таким образом, я делал некоторые настраивающие работы ядра Linux, например.
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_timestamps=1
sysctl -w net.ipv4.tcp_tw_recycle=1
После этого обстоятельство стало лучше, но не достаточно хорошее,
Так могли Вы, парни могли дать мне больше информации о socket/tcp параметрах, настраивающихся на
параметры ядра Linux, те, которые перерабатывают/снова используют/закрывают сокеты в состоянии TIME_WAIT.
Любые советы или предложения высоко ценились бы.Большое спасибо.
Вы могли бы хотеть попытаться понизить сеть ipv4.tcp_fin_timeout, которая влияет, сколько времени сокеты болтаются в TIME_WAIT. Это уже довольно низко в 60; попытайтесь понизить его 10 за один раз и посмотрите, улучшает ли это ситуацию.
echo 50 >/proc/sys/net/ipv4/tcp_fin_timeout
Если это работает, добавьте его к sysctl.conf:
net.ipv4.tcp_fin_timeout = 50 # or whatever works best
Просто имейте в виду, что, в то время как это помогает с тестированием загрузки, это - не обязательно большое значение по умолчанию для реального использования.