Seo Форум

Форум по программированию => Базы данных => Тема начата: ProT от 09-10-2012, 14:54:57

Название: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: ProT от 09-10-2012, 14:54:57
Всем привет) У меня такая проблема...Есть сайт - интернет-магазин:
1. Последнее время стало периодически приходить письмо от хостера о превышении допустимой нагрузки на MySQL
2. Так же не так давно CMS сайта начала выдавать ошибку при массовой рaссылке писем "Невозможно определить функцию отправки почты"
3. Массовая рaссылка происходит методом PHP mail function
4. Я, естественно, посчитал, что эти два факта связаны между собой. Построил для сравнения график нагрузки на MySQL и график массовой рaссылки - графики почти-что совпадают по датам!Сделал вывод,что причина именно в рaссылке.
5. Задал вопрос хостеру,выяснилось, что они поддерживают максимум 1000 писем при единовременной отправке методом PHP mail function, а у нас уже более 1800 пользователей, которым идет рaссылка.
6. Так же хостер пояснил,что проблема может быть в не правильно оптимизированном запросе к БД при массовой рaссылке...
7. Как же оптимизировать этот запрос? Как я понимаю что-то в файле phpmailer.php менять? Но вот что именно?
Название: Re: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: Greenex Studio от 15-05-2013, 23:42:49
Закажите дешовый VPS да и проблем с ограничениями не будет)
Название: Re: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: parmactep от 15-05-2013, 23:47:29
вам поможет отправка через smtp
phpmailer поддерживает такую возможность...
http://blog.brainf.net/php/klass-phpmailer-pishite-pisma/
Название: Re: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: remind4me от 15-05-2013, 23:51:27
Цитата: ProT от 09-10-2012, 14:54:57Как же оптимизировать этот запрос? Как я понимаю что-то в файле phpmailer.php менять? Но вот что именно?
Я думаю, что не запрос к БД нужно оптимизировать, а скрипт активирующий е-мэйл рaссылку, а phpmailer.php вообще не желательно трогать.
Конкретнее - нужно разбить процесс отправки писем на порции, т.е. чтобы рaссылка отправлялась не за один присест, а небольшими порциями, например по 100-200 писем за раз, с относительно небольшими временными интервалами между отправками очередных пачек писем.
Название: Re: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: parmactep от 16-05-2013, 01:43:50
remind4me, на таком количестве можно пачкой отправлять... но дело в том что mail() грузит процессор... а при таком количестве запросов в цикле - грузит его на долго... тоесть должно быть либо распараллеливание запросов, либо slip() между запросами....
Название: Re: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: remind4me от 16-05-2013, 01:48:41
parmactep, так я собственно об этом и писал, просто нужно не зацикливать с паузами, а запускать скрипт управления для каждой "пачки" писем заново (завершив предыдущий конечно же), чтобы не висел процесс постоянно, и перед запуском очередной пачки отправки писем делать небольшую паузу.
Название: Re: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: parmactep от 16-05-2013, 02:04:20
remind4me, так я как раз о том что можно зациклить с паузами в данном случае.....
Название: Re: Нагрузка на MySQL - результат массовой рaссылки писем?
Отправлено: jefffspb от 17-03-2014, 05:10:33
А как почта прoстите с базой данных связана ?
проблема с почтой это отдельная история а с базой отдельная.

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

по поводу тормозов базы - проанализируйте что у вас там большое есть, запросите у хостера файл slow_log от mysql.и оптимизируйте =)