Страница 1 из 1
Зависает сервер myChat 2024.3.3

Добавлено:
Пн апр 22, 2024 3:24 pm
ЕвгенийГуков
Добрый день.
Эта проблема появилась не в этой сборке. Проблема существует давно уже около года. Она возникает то чаще то реже, но она существует.
Проблема проявляется в том, что myChat-клиент перестаёт переключаться между вкладками пользователей чата. Т.е. открыта вкладка чата с пользователем Сидоров. Хочу переключиться на чат с Петровым. По Петрову щелкнул, а переписка продолжает отображаться с Сидоровым. Иногда пользователи звонят с проблемой, что не могут отправить сообщение. По кнопке "Отправить" щёлкнули, а ничего не происходит. Это всё проявления одной и той же проблемы - сервер myChat повис. Когда происходит такая проблема, то войти в административную панель myChat-сервера нет возможности - процесс авторизации крутиться бесконечно. Если завершить myChat-клиент, то после запуска новой копии клиент не может зарегистрироваться на сервере.
Причём служба сервера продолжает работать. Ошибок в логах и каталоге Errors нет. Помогает перезапуск службы myChat-сервер.
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Пн апр 22, 2024 10:08 pm
Алексей Пикуров
Здравствуйте.
У вас есть какие-либо скрипты, которые выполняются на сервере по таймеру или по каким-то событиям?
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Вт апр 23, 2024 10:49 am
ЕвгенийГуков
Добрый день.
Да, есть. На событие OnPrivateMessage.
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Вт апр 23, 2024 10:50 am
Алексей Пикуров
Покажите исходный текст, пожалуйста.
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Вт апр 23, 2024 5:03 pm
ЕвгенийГуков
Код: Выделить всёconst
sHost = 'mail.pisem.net';
sEmailFrom = '[email protected]';
sPassword = '**********';
iPort = 25;
MSG_TYPE_COMMENT = 21;
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
sEmailTo, sReplyTo, sTextBody, sNameFrom, sNameTo: string;
begin
result := true;
if not mIsUINOnline(iUINTo) then begin
sEmailTo := mGetUserPrimaryEmail(iUINTo);
if Length(sEmailTo) > 0 then begin
sNameFrom := mGetUserFullNameByPreset(iUIN, 2);
sNameTo := mGetUserFullNameByPreset(iUINTo, 2);
sTextBody := '<span style="color:green">' + FormatDateTime('[dd.mm.yyyy hh:nn:ss]', Now) + '</span>'+
'<span style="color:blue"><b> ' + sNameFrom + '</b></span>'+
'> '+ ReplaceString(mConvertMsgToPlainText(sMsg, iMsgType), CRLF, '</br>', true, false)+
'<span style="color:grey"><p>_______________________________________________<br>'+
'Сообщение отправлено сервером MyChat. Просьба не отвечать на это сообщение.<br>';
sReplyTo := mGetUserPrimaryEmail(iUIN);
if Length(sReplyTo) > 0 then
sTextBody := sTextBody + 'Если вы хотите ответить пользователю ' + sNameFrom +
', то пишите на адрес: <a href="mailto:' + sReplyTo + '">' + sReplyTo + '</a>';
sTextBody := sTextBody + '</p></span>';
SendEmail(sHost, iPort, sEmailFrom, sPassword, sEmailFrom, true, sEmailTo,
'Новое сообщение MyChat от ' + sNameFrom, sTextBody, 1, '');
mSendPrivateMessage(iUINTo, iUIN, 'Я СЕЙЧАС НЕ В СЕТИ. Сообщение продублировано мне на e-mail.', MSG_TYPE_COMMENT);
end;
end;
end;
begin
end.
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Вт апр 23, 2024 5:45 pm
Алексей Пикуров
Скрипт Ок, задержек по времени тут нет, отправка email асинхронная. Я не знаю, почему может зависать у вас сервер.
Судя по тому, что вы описываете, на сервере случился deadlock. Сервер работает, но из-за дедлока заблокировалась какая-то структура данных и дальнейшая нормальная работа становится невозможной.
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Ср апр 24, 2024 10:21 am
ЕвгенийГуков
Добрый день.
Я отключил скрипт. Это не критично. Понаблюдаю...
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Ср апр 24, 2024 8:01 pm
Алексей Пикуров
Как минимум, стоит посмотреть, связаны ли скрипты и проблема с зависанием.
Re: Зависает сервер myChat 2024.3.3

Добавлено:
Вт июл 09, 2024 1:10 pm
Алексей Пикуров
Похоже, нашли проблему. Сегодня будет свежая сборка с исправлением.