Название: Проблема коннекта к серверу под нагрузкой Отправлено: garryHotDog от Октябрь 07, 2010, 20:09 Для более ясной картины опишу что за сервер и как работает (Это линуксовый сервак для раздачи файлов)
- qtcpserver - qtcpsocket (используются асинхронный режим работы - не блокирующийся) - qt462 - ubuntu 9.10 - qtcreator Алгоритм работы: 1. К серваку подключается клиент - я создаю новый сокет для работы с клиентом (напомню сокет асинхронный). 2. Когда приходит запрос от клиента на закачку файла - нахожу это файл или его часть в рабочей директории (в данном случае это другой сервак - т.к. файлов там на 100Gb) 3. "Отдаю" файл или его часть клиенту - и отключаюсь от него. В чем проблема: через некоторое время - время коннекта к серваку (например по telnet) сильно возрастает или невозможно подключиться к нему вообще.. Предположения: - возрастает кол-во клиентов (хотя это не должно вешать) - из за того что файлы для раздачи находятся на удаленном серваке (т.е. сначало я их качаю - потом раздаю клиенту) - ну еще идея что пока один сокет читает данные из файлы - другие блокируются! Жду от форумчан каких нибудь соображений по этой проблемке! Заранее спасибо! Название: Re: Проблема коннекта к серверу под нагрузкой Отправлено: merke от Октябрь 08, 2010, 07:40 Знакомая проблема! Запросы становятся в очередь. Решение использовать многопоточность! QThread!!!
Название: Re: Проблема коннекта к серверу под нагрузкой Отправлено: garryHotDog от Октябрь 08, 2010, 09:09 как вариант - я уже написал многопоточную версию...но проблема в том что в Линуксе поток очень тяжелый объект поэтому приходится ограничивать их....а для заказчика - ограничение клиентов - большая беда....может кто нибудь знает как уменьшить размер потока (используемой памяти) в Линуке.... пробовал изменять размер стека - не особо помогло!
Название: Re: Проблема коннекта к серверу под нагрузкой Отправлено: Barmaglodd от Октябрь 08, 2010, 11:50 Сделай не "один поток-одно соединение", а "один поток-несколько соединений". Разбивай файл на маленькие кусочки, чтобы остальные клиенты имели возможность обработаться, вынеси загрузку файла в отдельный поток.
Ну и традиционная бестолковая рекомендация: "Надо было использовать соответствующие инструменты, а не Qt". Название: Re: Проблема коннекта к серверу под нагрузкой Отправлено: navrocky от Октябрь 08, 2010, 15:07 но проблема в том что в Линуксе поток очень тяжелый объект.... Хм, первый раз об этом слышу, можно поподробнее? Что в нем такого тяжелого Название: Re: Проблема коннекта к серверу под нагрузкой Отправлено: garryHotDog от Октябрь 08, 2010, 18:13 Да я сам особо не понимаю, просто создай например 100-300 потоков и запусти их (например посылать данные на сервер) и посмотри сколько памяти хавается!
|