![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Majesty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.3.2005 Где: Almaty, Kazakhsta n Репутация: нет Всего: нет |
На яве пишу недавно и по чуть-чуть. Появилась необходимость соорудить сервер, который будет принимать соединения на указанном порту и обрабатывать запросы. Делаю так:
PS: Тема возникла из-за того, что на сервере (16 процессоров, 16 гиг оперативки, centOS 5, JRE 6) под "живой" нагрузкой приложение стало отъедать до 90% процессора (т.е. в сумме 1440% из 1600% возможных). На ноутбуке (core2duo, 2 гига оперативки, ubuntu 9.10, JRE 6) и рабочем компе (core2duo, 3 гига оперативки, Win XP sp3, JRE 6) процессор кушался на 10% в пиках (нагружал с помощью утилиты ab, которой обычно тестируют веб-сайты на стрессоустойчивость). Приложение получает соединения от php-скрипта, вызываемого пользователями сайта... Это сообщение отредактировал(а) Majesty - 2.7.2010, 12:48 |
|||
|
||||
AbSs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 2.7.2010 Репутация: нет Всего: нет |
public Socket accept() throws IOException
Listens for a connection to be made to this socket and accepts it.The method blocks until a connection is made. .... Проблема в другом. Стоит ли для каждого клиента делать отдельный поток? |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Ну наверное там должно быть не
а
![]() В остальном все зависит от того сколько соединений вы ожидаете в среднем, сколько соединений может быть в пике, сколько потоков можно запускать на данном конкретном сервере и т.д. Для начала возьмите Java Visual VM (или любой другой профайлер который вам нравится) и посмотрите чем там вообще ваши треды занимаются и сколько их там запущенно в принципе. Если выяснится что нужно ограничть количество потоков то тут есть пара вариантов как это можно сделать. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Majesty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.3.2005 Где: Almaty, Kazakhsta n Репутация: нет Всего: нет |
Посмотрел на своём компе (не на сервере, поскольку к нему доступа у меня нет :(). Запущено 13-15, в пике до 17 тредов. Процессор кушается всплесками от 2-3% до 50%. Интересно, что в тредах есть ещё некие Daemon threads - 11 штук. Что это такое? ![]() |
|||
|
||||
Majesty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.3.2005 Где: Almaty, Kazakhsta n Репутация: нет Всего: нет |
||||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Это именно NetworkAppThread потоки или вообще все потоки? 17 потоков это не много для сервера особенно такого мощного. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Majesty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.3.2005 Где: Almaty, Kazakhsta n Репутация: нет Всего: нет |
Это все потоки моего приложения ![]() Вообще, это собственный велосипед для поиска на базе Apache Lucene. Использовать Solr не хочется из-за его монструозности. Так вот, судя по профайлеру, больше всего грузит метод ReadByte из Lucene. Есть соображение, что это я тупой и напрасно для каждого запроса вытаскиваю вообще все возможные результаты. Возможно, следует добавить в запрос некий параметр для ограничения кол-ва возвращаемых результатов, ибо чаще всего их нужно не тысячи, а всего 5. Это сообщение отредактировал(а) Majesty - 8.7.2010, 10:05 |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Ну это как посмотреть, у меня на JDK 1.6 в Hello World! 7 потоков! Один мой и 6 системных. Ну тогда это уже вопрос не по сети. Создай новую тему и опиши там проблему, архитектуру программы и т.д. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Majesty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.3.2005 Где: Almaty, Kazakhsta n Репутация: нет Всего: нет |
Ок, спасибо за помощь
![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |