Russian Qt Forum
Ноябрь 23, 2024, 21:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Проблема коннекта к серверу под нагрузкой
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Проблема коннекта к серверу под нагрузкой (Прочитано 3316 раз)
garryHotDog
Гость
Проблема коннекта к серверу под нагрузкой
«
:
Октябрь 07, 2010, 20:09 »
Для более ясной картины опишу что за сервер и как работает (Это линуксовый сервак для раздачи файлов)
- qtcpserver
- qtcpsocket (используются асинхронный режим работы - не блокирующийся)
- qt462
- ubuntu 9.10
- qtcreator
Алгоритм работы
:
1. К серваку подключается клиент - я создаю новый сокет для работы с клиентом (напомню сокет асинхронный).
2. Когда приходит запрос от клиента на закачку файла - нахожу это файл или его часть в рабочей директории (в данном случае это другой сервак - т.к. файлов там на 100Gb)
3. "Отдаю" файл или его часть клиенту - и отключаюсь от него.
В чем проблема:
через некоторое время - время коннекта к серваку (например по telnet) сильно возрастает или невозможно подключиться к нему вообще..
Предположения:
- возрастает кол-во клиентов (хотя это не должно вешать)
- из за того что файлы для раздачи находятся на удаленном серваке (т.е. сначало я их качаю - потом раздаю клиенту)
- ну еще идея что пока один сокет читает данные из файлы - другие блокируются!
Жду от форумчан каких нибудь соображений по этой проблемке! Заранее спасибо!
Записан
merke
Гость
Re: Проблема коннекта к серверу под нагрузкой
«
Ответ #1 :
Октябрь 08, 2010, 07:40 »
Знакомая проблема! Запросы становятся в очередь. Решение использовать многопоточность! QThread!!!
Записан
garryHotDog
Гость
Re: Проблема коннекта к серверу под нагрузкой
«
Ответ #2 :
Октябрь 08, 2010, 09:09 »
как вариант - я уже написал многопоточную версию...но проблема в том что в Линуксе поток очень тяжелый объект поэтому приходится ограничивать их....а для заказчика - ограничение клиентов - большая беда....может кто нибудь знает как уменьшить размер потока (используемой памяти) в Линуке.... пробовал изменять размер стека - не особо помогло!
Записан
Barmaglodd
Гость
Re: Проблема коннекта к серверу под нагрузкой
«
Ответ #3 :
Октябрь 08, 2010, 11:50 »
Сделай не "один поток-одно соединение", а "один поток-несколько соединений". Разбивай файл на маленькие кусочки, чтобы остальные клиенты имели возможность обработаться, вынеси загрузку файла в отдельный поток.
Ну и традиционная бестолковая рекомендация: "Надо было использовать соответствующие инструменты, а не Qt".
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: Проблема коннекта к серверу под нагрузкой
«
Ответ #4 :
Октябрь 08, 2010, 15:07 »
Цитата: garryHotDog от Октябрь 08, 2010, 09:09
но проблема в том что в Линуксе поток очень тяжелый объект....
Хм, первый раз об этом слышу, можно поподробнее? Что в нем такого тяжелого
Записан
Гугль в помощь
garryHotDog
Гость
Re: Проблема коннекта к серверу под нагрузкой
«
Ответ #5 :
Октябрь 08, 2010, 18:13 »
Да я сам особо не понимаю, просто создай например 100-300 потоков и запусти их (например посылать данные на сервер) и посмотри сколько памяти хавается!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...