Linux thread (от чего зависит максимальное количество потоков???)

Модератор: Модераторы разделов

steepf
Сообщения: 5
ОС: suse

Linux thread

Сообщение steepf »

Здраствуйте!
проблемка такова!
есть сетевое приложение которое создает 500 потоков, каждый поток использует отдно сетевое соединение. программа больше чем 350 потоков не создает, при условии что жедезо мощьное.
если запустить второй экземпляр программы то и она тоже свободно создает тоже 350 потоков.
вопрос: от чего зависит количество потоков? и как с этим бороться?
PS:количество открытых сокетов равно количеству потоков, никто ничего не хавает лишнего. я так понимаю что гдето есть какойто предел за который я цепляюсь, если кто занет что и как где посмотреть то буду признателен!!!
сервер нагрузки не чествует тоесть я так понимаю что его мона еще грузить и грузить!
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Linux thread

Сообщение nesk »

покажите что выводит команда
cat /proc/sys/kernel/threads-max
и
ulimit -a
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Linux thread

Сообщение frp »

А зачем такое количество потоков? Если ПО для сервера, то еще нормально (моя домашняя машинка начинала глючить после нескольких тысяч потоков), но если для десктопа, то пользователи слабых машин вас убьют (и правильно сделают :gun2: ).

Если вам нужно отслеживать работу соккета (пришли данные, разорвалось соединение) - можно сделать poll, select, epoll (последний не рекомендую, он не работает на старых ядрах).
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Linux thread

Сообщение watashiwa_daredeska »

steepf писал(а): ↑
28.07.2009 14:50
есть сетевое приложение
32-битное или 64?
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Linux thread

Сообщение Rootlexx »

frp писал(а): ↑
28.07.2009 19:45
Если вам нужно отслеживать работу соккета (пришли данные, разорвалось соединение) - можно сделать poll, select, epoll (последний не рекомендую, он не работает на старых ядрах).

Спорный совет. Да, epoll отсутствует в ядрах 2.4, но во-первых, существуют патчи, добавляющие его, во-вторых, он быстрее всех конкурентов даже на одном дескрипторе, а в-третьих, он прекрасно масштабируется в отличие от poll и особенно select.
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Linux thread

Сообщение frp »

Rootlexx писал(а): ↑
28.07.2009 21:42
Да, epoll отсутствует в ядрах 2.4, но во-первых, существуют патчи, добавляющие его, во-вторых, он быстрее всех конкурентов даже на одном дескрипторе, а в-третьих, он прекрасно масштабируется в отличие от poll и особенно select.

Патч - немного извращение (я, например, не стану ядро пересобирать или обновлять из-за какой-то одной программы если эта программа будет иметь аналоги, не требующие этого). Если автору epoll удобнее, то пусть сделает библиотеку для эмуляции epoll на старых ядрах (у меня сейчас ядро 2.6.26, но иногда мне приходится работать с ядрами 2.4.x).
Спасибо сказали: