Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
Kvazaar
Доброго времени суток.
Столкнулся со следующей ситуацией. Была установлена версия сервера 4.9.11.0 на 400 клиентских подключений.
Постоянное число клиентов около 300. FTP, WEB отключены. Сеть областного масштаба построена по ADSL технологии.

Замечено, что при старте сервера нагрузка на процессор близка к 100% и держится на этом уровне, пока все клиенты полностью не подключатся. Затем нагрузка менее 5%. При этом, если стартовать сервер в середине рабочего дня, то он либо зависал (как правило до 5 минуты своей работы), либо просто завершал свою работу. Никаких связанных записей в системных журналах Windows не было, *.elf файл не создавался. В связи с этим запустить/перезапустить сервер в середине рабочего дня просто было невозможно. При снижении количества клиентов до 50-70 сервер запускался нормально.

Обновил версию сервера на 4.10.4. Клиенты предсказуемо "отвалились", но пытаются подлючиться (что видно в консоли сервера). Нагрузка на сервер снова близка к 100% и не падает :!:.
Стоит отметить, что в новой версии, несмотря на загрузку процессора, открываются различные пункты меню (в старой зависало намертво).

В силу низкой пропускной способности сети клиентов все равно будут обновлять "на местах".

Ну и собственно вопросы.
1. При обновлении планируется увеличить и разнести по времени интервалы между подключениями к серверу (насколько это поможет, может есть какие либо рекомендации по этим значениям?)
2. На сервере в настройках пользователей первая колонка с отметками блокировать/не блокировать. Имеет ли смысл убрать отметки у необновленных клиентов для разгрузки сервера?
3. Можно ли еще как то снизить нагрузку на процессор при старте сервера?
Аватара пользователя
Андрей Раков
Возможно вы найдете ответ (загрузка процессора) в этой теме - viewtopic.php?f=1&t=1983
Аватара пользователя
Алексей Пикуров
Kvazaar писал(а):FTP, WEB отключены

Зря. Лишаете себя отправок скриншотов, картинок, и просмотра логов через WEB.
Ну и собственно вопросы.
1. При обновлении планируется увеличить и разнести по времени интервалы между подключениями к серверу (насколько это поможет, может есть какие либо рекомендации по этим значениям?)

В каждой новой версии делаем оптимизации. У всех клиентов очень разные сети и разные настройки серверов, поэтому процесс движется медленно.
2. На сервере в настройках пользователей первая колонка с отметками блокировать/не блокировать. Имеет ли смысл убрать отметки у необновленных клиентов для разгрузки сервера?

Никак не влияет. Это работает для уже авторизующихся клиентов, у который "правильная" версия клиента.
3. Можно ли еще как то снизить нагрузку на процессор при старте сервера?

Пока нет. Самое худшее, что может быть с сервером - это как раз пиковые нагрузки при перезагрузке, например. Когда к нему подключается очень большое количество клиентов в сравнительно малый промежуток времени. Ничего такого, что поможет снизить эту нагрузку, кроме как можно более быстрого отрабатывания процесса логина, мы пока не придумали.
Kvazaar
А можно отправить настройки посредством удаленного управления с "нового" сервера на "старые" клиенты?
Или изменить IP адрес подключения "старым" клиентам, чтобы они не мешали основной работе?

И вопрос в догонку :). Я правильно понял, что механизм обновления запускается по факту подключения клиента к серверу и выборочно обновить клиентов с сервера нельзя?
В медленных сетях и при большом количестве клиентов это критичный вопрос.
Последний раз редактировалось Kvazaar Ср окт 26, 2011 3:38 pm, всего редактировалось 1 раз.
Аватара пользователя
Андрей Раков
С сервера более новой версии уже нельзя, но если есть возможность управления клиентами (например Active Directory), то можно изменять параметры подключения удаленно.
Аватара пользователя
Алексей Пикуров
Kvazaar писал(а):И вопрос в догонку :). Я правильно понял, что механизм обновления запускается по факту подключения клиента к серверу и выборочно обновить клиентов с сервера нельзя?
В медленных сетях и при большом количестве клиентов это критичный вопрос.

Да, обновление запускается только после подключения. Всех желающих клиентов, никакого разделения ни по каким признакам нету.

Пока этого сделать нельзя. Предлагайте, как вы это видите, обсудим, подумаем. На будущее.
Kvazaar
Gifer писал(а):С сервера более новой версии уже нельзя...

Жаль, было бы удобно удаленно отключать проверку обновления на клиентах путем отправки настроек с сервера (параметр DailyUpdatesCheck=yes/no - в ini файле находится в разделе general, а не update) и затем включать ее выборочно.

В моем случае, придется клиентам посидеть без чата. Хорошо еще, что поставили недавно, не привык народ к нему
Аватара пользователя
Алексей Пикуров
Параметр DailyUpdatesCheck говорит клиенту "Проверяй наличие новой версии на официальном сайте http://www.nsoft-s.com раз в неделю и показывай окошко с уведомлением, если есть новая версия". Больше ни на что этот параметр не влияет. Клиент чата будет подключаться к серверу и работать, как и раньше, никаких обновлений устанавливать не будет самостоятельно.

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

Этот параметр здесь не при чём.
Kvazaar
Ответ на свой вопрос я уже получил, спасибо за разъяснения. Просто автоматическое обновление в моем случае нежелательно из-за большого количества клиентов и медленной сети. А ручное обновление займет долгий промежуток времени. Исходя из Ваших ответов, нагрузку на сервер со стороны необновленных клиентов снять тоже не получится. Поэтому придется сделать полный останов сервера на период обновления.

Чисто теоретически можно сделать следующее:
1. Убрать проверку обновлений на клиентах через удаленное управление
2. На сервере в разделе обновления ставим отметку о принудительном обновлении клиентов.
3. Затем включаем проверку обновлений на небольшой группе клиентов (интервал проверки должен быть небольшим)
4. Требуемая часть клиентов обновляются автоматом (если подключение автоматическое) либо путем звонка и ручного запуска пользователем.
5. Отключаем проверку обновлений на обновленных клиентах и включаем следующей группе.

Непонятно, почему проверка идет на сайте, а не на своем сервере.
Загвоздка в несовместимости версий, но на мой взгляд, тут механизм флагов, который не сильно зависит от версии и его можно реализовать в будущих версиях.
Результат - некоторые клиенты посидят без общения чуть дольше, но нагрузка на сеть и сервер падает в разы, а процесс обновления прозрачен для администратора.
Аватара пользователя
Алексей Пикуров
Поясню ещё раз.

Проверка обновлений на клиентах не влияет ни на что. Это просто "для информации".

Когда клиент подключается к новому серверу, например, клиент 4.10.2 к серверу 4.10.4, то сервер сразу же "отбивает клиента, сообщая ему, что их версии несовместимы.

На клиенте появляется окошко, в котором пишется, что нужно обновить клиента. Или клиент сам начинает тащить апдейт с MyChat сервера (смотря как настроен сервер).

Настройка клиента "проверять" или "не проверять" обновления - никак не влияет на то, что клиент чата подключается или не подключается к серверу чата.

Проверка версии производится на самом сервере, ведь совершенно необязательно администратор хочет работать на самой последней версии чата, может, его устраивает более старая версия.

В вашей ситуации, когда клиентов много, а канал связи узкий, нужно придумать какой-то альтернативный способ обновления, чтобы клиенты, с одной стороны, не грузили сервер, а с другой стороны, могли нормально обновиться.
Kvazaar
Kvazaar писал(а):Чисто теоретически можно сделать следующее:

Все, что ниже этой фразы было ответом на Ваше предложение :)
Предлагайте, как вы это видите, обсудим, подумаем. На будущее.


Ведь если реализовать совместимость импорта конфигурации между следующими версиями серверов и текущей клиента, а также добавить силы параметру проверки обновления со стороны клиента (а значит и со стороны сервера), то механизм выборочного обновления уже готов.

Возможно более простой альтернативой будет простое добавление в таблицу пользователей "разрешения", можно им обновляться или нет.

P.S. Повторюсь, что интересующий меня ответ получен, развитие темы уже больше соответствует предложениям и пожеланиям следующих версий.
Аватара пользователя
Алексей Пикуров
Окей, развиваем тему :)
Какая пропускная способность сети у ваших клиентов? И какая у сервера?

Желательно ведь как-то автоматизировать процесс обновления, не сидеть же вручную всё делать.
Kvazaar
Примерно следующее:
Сервер -- 2 MB/s -- Центральное сетевое оборудование -- 128-256 kB/s -- Сетевое оборудование здания (45 зданий) -- Локальная сеть 100 MB/s -- клиенты (от 3 до 24)

По этим же каналам работает электронная почта, внутренняя телефонная связь, обновление антивируса.

В этот раз буду обновлять вручную, так как параллельно нужно еще выполнить ряд задач, которые можно сделать только локально.
Аватара пользователя
Алексей Пикуров
Мы пришли к решению, что стоит разработать специальный сервер обновлений.

Тогда его можно будет установить в сегменте локальной сети и заставить клиентов обновляться с него, по быстрой локалке, а не с внешнего MyChat сервера. Я думаю, это может решить вашу проблему.
Kvazaar
Т.е что то вроде "зеркала", которые испольуют различные антивирусы?
Аватара пользователя
Алексей Пикуров
Именно так. Возможно, более продвинутый.
Аватара пользователя
Алексей Пикуров
Система обновлений в новых версиях уже достаточно оптимизирована, размеры обновлений небольшие, всё кешируется на сервере в памяти, так что нагрузки на процессор минимальные.