Как я могу создать более 14000 клиентов, используя HTTP (Tomcat), в то время как HTTP работает по TCP, следовательно, сокет создан - PullRequest
1 голос
/ 07 мая 2009

HTTP протоколы работают по TCP / IP. Поэтому мы можем сказать, что если мы подключим клиента, то будет ли это TCP или HTTP, будет создан сокет и, следовательно, будет создан файл. Tomcat работает по HTTP.

На TCP я могу создать 1024 клиента одновременно. Если я создаю больше клиентов, то я получаю Слишком много ошибок открытия файла. Но используя Tomcat, я могу создать более 14000 клиентов.

Если я использую Tomcat, я не использую ulimit для увеличения лимита файлов моей ОС.

Как это возможно?

Ответы [ 4 ]

3 голосов
/ 07 мая 2009

Я думаю, что либо ...

  1. вы запускаете tomcat с пользователем (а не с вашей интерактивной оболочкой, которая ограничена), у которой предел превышает 1024
  2. ваш скрипт startup.sh содержит в себе оператор ulimit.

Чтобы выяснить, имеет ли место последний случай ...

grep ulimit ./bin/*

Кроме того, расскажите нам, как вы начинаете tomcat, и мы разберемся с этим! Чтобы увидеть, под каким пользователем работает ваш кот, попробуйте что-то вроде этого ...

ps aux | grep tomcat | cut -d " " -f 1

Вывод покажет использование имени пользователя и идентификатора процесса. Могу поспорить, что это отличается от того, под чем вы работаете.

2 голосов
/ 07 мая 2009

Это ограничение вашей операционной системы на то, как могут быть открыты ресурсы manny. В * NIX вы можете контролировать эти ограничения с помощью ulimit (http://www.ss64.com/bash/ulimit.html)

2 голосов
/ 07 мая 2009

Существует ограничение на количество дескрипторов файлов, которые процессу разрешено использовать. В системах Unix сокет использует файловый дескриптор.

Чтобы преодолеть ограничение в 1024 дескриптора файла, вы можете использовать команду ulimit .

0 голосов
/ 07 мая 2009

Когда вы говорите «Используя Tomcat, я могу создать более 14000 клиентов», что именно вы подразумеваете под «клиентом»?

Возможно ли, что ваше приложение имитирует 14000 одновременных пользователей (каждый из которых может отправлять, скажем, 1 HTTP-запрос каждые 10 секунд к серверу, каждый запрос занимает 0,01 секунды, поэтому tomcat нужно только ~ 14 одновременных соединений в любой момент времени?

с использованием netstat -n|grep 8080 выведет список всех активных HTTP-соединений с вашим котом (если вы прослушиваете порт 8080, при необходимости измените его). Это должно позволить вам увидеть, сколько TCP-соединений вы действительно используете.

Не могли бы вы опубликовать более подробную информацию о том, что на самом деле делает ваша программа нагрузочного тестирования? Это может помочь понять, что вы видите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...