Moodle yandex mail

Moodle yandex mail

от W AU -
Количество ответов: 5

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

Установлено, что выставив лимит отправки "1 письмо в сессию" мы получаем 1 письмо в 1 сессию отправки, при этом 1 сессия в минуту. Т.е. отправка 200 писем = 200 мин. При этом наблюдается "залипание" сервиса Мудл. Лечится ли это какими-то настройками  Мудла (про смену транспорта почты  и выставление ХХ писем за сессию сам знаю).

Приложение Снимок экрана от 2016-07-04 12-28-52.png
В ответ на W AU

Re: Moodle yandex mail

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Да, это лечится установкой почтового сервера на том же сервере, что и moodle, например, postfix, который, в свою очередь, настраивается на отправку почты от имени вашей учетки mailru, google или yandex.

То есть php отправляет все письма пачкой на локальный postfix. Поскольку postfix локальный и настроен на приём всех писем без разбору, такая отправка происходит очень быстро, и не грузит php независимо от количества писем. В свою очередь postfix потихоньку от вашей учётки рассылает письма по одному или несколько за сессию, но его сессии не ограничены одним вызовом в минуту, как задача в moodle, вызываемая по cron. Поэтому следующее письмо будет уходить сразу, как только отправится предыдущее. Если будут проблемы, postfix может попробовать повторить отправку (ну как настроете). Поскольку postfix (или любой другой нормальный почтовый сервер, то, что нужно умеет даже iis в windows) сделан умело, он будет тихонько фоном делать свою работу практически не забирая системных ресурсов.

В ответ на Vadim Dvorovenko

Re: Moodle yandex mail

от W AU -

вопрос возникал к php. Решение через свой демон (хость постфикс, хоть любой иной, с релеем или без) известно. Вопрос в другом - ненормально, когда Мудл подвешивается на время отправки кому бы то ни было. В моем случае он давал отлуп с ошибкой 50х и "отморозился" только после отправки последнего сообщения.

Посмотрел в сторону крона - но там не увидел задачи по почте. СОгласитесь, можно выставить лимит 100, 200, 300 писем за сессию - мы маленькие, нам хватит. Но большим-то этого мало и посетителей больше, чем у нас. У Вас, больших, какие выставлены лимиты отправки сообщей в Мудле?

Казалось бы даже не вопрос многопоточности - процессы ведь разные, каждый пользователь при входе через nginx рождает свой процесс. Ошибок в логах nginx (относимых к делу) не наблюдалось.

Может что в лимитах php требует доводки?


В ответ на W AU

Re: Moodle yandex mail

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Moodle умеет слать почту из php несколькими разными способами, там две или три библиотеки разных есть для этого. Но все эти библиотеки проводят к тому, что сам php открывает сессию до сервера и ждет ответа, потом закрывает. Так как у вас сервера далеко и подключение идет по https, то php должен открыть обычное соеднинение, дождаться ответа с сертификатом, проверить сертификат, подключиться с этим сертификатом и создать https канал, подключиться по этому каналу к серверу, получить запрос логина, отправить логин, получить запрос пароля, отправить пароль, получить ответ о том, что всё в порядке и только после этого уже отправлять письмо (ну или много писем в зависимости от настроек). Это всё очень долгие процедуры, свзязанные с ожиданием данных из сети. Всё это время php сидит и ждёт ответа, грузит процессор, занимает память, не разрывает соединение с базой данных. Использовать php для вещей, которые он умеет делать плохо, не стоит. Именно поэтому у нас и стоит локальный почтовый сервер и 1000 писем в сессию. 

А задача ваша находится в Администрирование - Сервер - Планировщик задач - \mod_forum\task\cron_task, \core\task\calendar_cron_task

Может быть у вас там за nginx стоит fastcgi и у nginx разрешено много процессов, а у fastcgi - мало и всё утыкается в него?

И cron у вас как работает, через php из командной строки или через запрос к веб-серверу. Если первое, то даже и не смотрите на настройки веб-серверов и php, потому что у php в командной строке отдельный файл конфигурации. Если же второе, то переделайте, чтобы было первое.

В ответ на Vadim Dvorovenko

Re: Moodle yandex mail

от W AU -

Лимит 1000 писем на сессию понял.

А в ПХП Вы что ставите под свои нагрузки?

в группе параметров типа

pm.max_spare_servers

pm.max_children
и т.п.?