Exim&MySQL

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 7:20:07

В логах очень часто висит ошибка:

Код: Выделить всё

Jul 25 00:00:05 mail exim[71205]: failed to expand "${lookup mysql{SELECT `domain` FROM `domain` WHERE `domain`='${domain}' AND `active`='1'}}" while checking a list: lookup of "SELECT `domain` FROM `domain` WHERE `domain`='host.ru' AND `active`='1'" gave DEFER: MYSQL connection failed: User exim already has more than 'max_user_connections' active connections
при этом в my.cnf

Код: Выделить всё

max_connections         = 12800
max_user_connections    = 1260
и ресурсы при этом мускул прилично начинает жрать:

Код: Выделить всё

55936 mysql     1277  20    0   368M   191M kserel 0  59:46  2.49% mysqld
truth is out there...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение zingel » 2008-07-25 7:49:01

плохой мускул, не хватает ему этих max*
Z301171463546 - можно пожертвовать мне денег

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 8:18:03

извиняюсь, забыл дать

Код: Выделить всё

mysql -V
mysql  Ver 14.14 Distrib 5.1.23-rc, for portbld-freebsd6.3 (i386) using  5.2

Код: Выделить всё

uname -a
FreeBSD mail.host.ru 6.3-RELEASE FreeBSD 6.3-RELEASE #0: Mon Feb 25 19:35:58 MSK 2008     kmb@www.host.ru:/usr/obj/usr/src/sys/SMP-25022008  i386

Код: Выделить всё

Exim version 4.69 #0 (FreeBSD 6.3) built 22-Mar-2008 16:02:09
truth is out there...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 8:19:00

zingel писал(а):плохой мускул, не хватает ему этих max*
предлагаете обновить мускул или увеличить число это еще?
truth is out there...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение dikens3 » 2008-07-25 9:05:03

ты бы посмотрел сам mysql во время работы. Сколько у него подключений, кто подключен и т.п. Вообще конечно всё он нагрузки на сервер зависит.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:24:48

По нагрузке, около 5000 пользователей, если правильно считал около 200.000 писем в день, домен очень раскрученный, таблица с грейлистингом достигает 1-2Мегов...
truth is out there...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:27:17

Код: Выделить всё

mysql> SHOW STATUS;
+-----------------------------------+----------+
| Variable_name                     | Value    |
+-----------------------------------+----------+
| Aborted_clients                   | 9        |
| Aborted_connects                  | 8956791  |
| Binlog_cache_disk_use             | 0        |
| Binlog_cache_use                  | 0        |
| Bytes_received                    | 130      |
| Bytes_sent                        | 347      |
| Com_admin_commands                | 0        |
| Com_alter_db                      | 0        |
| Com_alter_event                   | 0        |
| Com_alter_table                   | 0        |
| Com_analyze                       | 0        |
| Com_backup_table                  | 0        |
| Com_begin                         | 0        |
| Com_call_procedure                | 0        |
| Com_change_db                     | 0        |
| Com_change_master                 | 0        |
| Com_check                         | 0        |
| Com_checksum                      | 0        |
| Com_commit                        | 0        |
| Com_create_db                     | 0        |
| Com_create_event                  | 0        |
| Com_create_function               | 0        |
| Com_create_index                  | 0        |
| Com_create_table                  | 0        |
| Com_create_user                   | 0        |
| Com_dealloc_sql                   | 0        |
| Com_delete                        | 0        |
| Com_delete_multi                  | 0        |
| Com_do                            | 0        |
| Com_drop_db                       | 0        |
| Com_drop_event                    | 0        |
| Com_drop_function                 | 0        |
| Com_drop_index                    | 0        |
| Com_drop_table                    | 0        |
| Com_drop_user                     | 0        |
| Com_execute_sql                   | 0        |
| Com_flush                         | 0        |
| Com_grant                         | 0        |
| Com_ha_close                      | 0        |
| Com_ha_open                       | 0        |
| Com_ha_read                       | 0        |
| Com_help                          | 0        |
| Com_insert                        | 0        |
| Com_insert_select                 | 0        |
| Com_kill                          | 0        |
| Com_load                          | 0        |
| Com_load_master_data              | 0        |
| Com_load_master_table             | 0        |
| Com_lock_tables                   | 0        |
| Com_optimize                      | 0        |
| Com_preload_keys                  | 0        |
| Com_prepare_sql                   | 0        |
| Com_purge                         | 0        |
| Com_purge_before_date             | 0        |
| Com_rename_table                  | 0        |
| Com_repair                        | 0        |
| Com_replace                       | 0        |
| Com_replace_select                | 0        |
| Com_reset                         | 0        |
| Com_restore_table                 | 0        |
| Com_revoke                        | 0        |
| Com_revoke_all                    | 0        |
| Com_rollback                      | 0        |
| Com_savepoint                     | 0        |
| Com_select                        | 1        |
| Com_set_option                    | 0        |
| Com_show_binlog_events            | 0        |
| Com_show_binlogs                  | 0        |
| Com_show_charsets                 | 0        |
| Com_show_collations               | 0        |
| Com_show_column_types             | 0        |
| Com_show_create_db                | 0        |
| Com_show_create_event             | 0        |
| Com_show_create_table             | 0        |
| Com_show_databases                | 0        |
| Com_show_engine_logs              | 0        |
| Com_show_engine_mutex             | 0        |
| Com_show_engine_status            | 0        |
| Com_show_errors                   | 0        |
| Com_show_events                   | 0        |
| Com_show_fields                   | 0        |
| Com_show_grants                   | 0        |
| Com_show_keys                     | 0        |
| Com_show_master_status            | 0        |
| Com_show_new_master               | 0        |
| Com_show_open_tables              | 0        |
| Com_show_plugins                  | 0        |
| Com_show_privileges               | 0        |
| Com_show_processlist              | 0        |
| Com_show_slave_hosts              | 0        |
| Com_show_slave_status             | 0        |
| Com_show_status                   | 1        |
| Com_show_storage_engines          | 0        |
| Com_show_tables                   | 0        |
| Com_show_triggers                 | 0        |
| Com_show_variables                | 0        |
| Com_show_warnings                 | 0        |
| Com_slave_start                   | 0        |
| Com_slave_stop                    | 0        |
| Com_stmt_close                    | 0        |
| Com_stmt_execute                  | 0        |
| Com_stmt_fetch                    | 0        |
| Com_stmt_prepare                  | 0        |
| Com_stmt_reset                    | 0        |
| Com_stmt_send_long_data           | 0        |
| Com_truncate                      | 0        |
| Com_unlock_tables                 | 0        |
| Com_update                        | 0        |
| Com_update_multi                  | 0        |
| Com_xa_commit                     | 0        |
| Com_xa_end                        | 0        |
| Com_xa_prepare                    | 0        |
| Com_xa_recover                    | 0        |
| Com_xa_rollback                   | 0        |
| Com_xa_start                      | 0        |
| Compression                       | OFF      |
| Connections                       | 9065669  |
| Created_tmp_disk_tables           | 0        |
| Created_tmp_files                 | 5        |
| Created_tmp_tables                | 0        |
| Delayed_errors                    | 0        |
| Delayed_insert_threads            | 0        |
| Delayed_writes                    | 0        |
| Flush_commands                    | 1        |
| Handler_commit                    | 0        |
| Handler_delete                    | 0        |
| Handler_discover                  | 0        |
| Handler_prepare                   | 0        |
| Handler_read_first                | 0        |
| Handler_read_key                  | 0        |
| Handler_read_next                 | 0        |
| Handler_read_prev                 | 0        |
| Handler_read_rnd                  | 0        |
| Handler_read_rnd_next             | 0        |
| Handler_rollback                  | 0        |
| Handler_savepoint                 | 0        |
| Handler_savepoint_rollback        | 0        |
| Handler_update                    | 0        |
| Handler_write                     | 0        |
| Innodb_buffer_pool_pages_data     | 19       |
| Innodb_buffer_pool_pages_dirty    | 0        |
| Innodb_buffer_pool_pages_flushed  | 0        |
| Innodb_buffer_pool_pages_free     | 493      |
| Innodb_buffer_pool_pages_latched  | 0        |
| Innodb_buffer_pool_pages_misc     | 0        |
| Innodb_buffer_pool_pages_total    | 512      |
| Innodb_buffer_pool_read_ahead_rnd | 1        |
| Innodb_buffer_pool_read_ahead_seq | 0        |
| Innodb_buffer_pool_read_requests  | 77       |
| Innodb_buffer_pool_reads          | 12       |
| Innodb_buffer_pool_wait_free      | 0        |
| Innodb_buffer_pool_write_requests | 0        |
| Innodb_data_fsyncs                | 3        |
| Innodb_data_pending_fsyncs        | 0        |
| Innodb_data_pending_reads         | 0        |
| Innodb_data_pending_writes        | 0        |
| Innodb_data_read                  | 2494464  |
| Innodb_data_reads                 | 25       |
| Innodb_data_writes                | 3        |
| Innodb_data_written               | 1536     |
| Innodb_dblwr_pages_written        | 0        |
| Innodb_dblwr_writes               | 0        |
| Innodb_log_waits                  | 0        |
| Innodb_log_write_requests         | 0        |
| Innodb_log_writes                 | 1        |
| Innodb_os_log_fsyncs              | 3        |
| Innodb_os_log_pending_fsyncs      | 0        |
| Innodb_os_log_pending_writes      | 0        |
| Innodb_os_log_written             | 512      |
| Innodb_page_size                  | 16384    |
| Innodb_pages_created              | 0        |
| Innodb_pages_read                 | 19       |
| Innodb_pages_written              | 0        |
| Innodb_row_lock_current_waits     | 0        |
| Innodb_row_lock_time              | 0        |
| Innodb_row_lock_time_avg          | 0        |
| Innodb_row_lock_time_max          | 0        |
| Innodb_row_lock_waits             | 0        |
| Innodb_rows_deleted               | 0        |
| Innodb_rows_inserted              | 0        |
| Innodb_rows_read                  | 0        |
| Innodb_rows_updated               | 0        |
| Key_blocks_not_flushed            | 0        |
| Key_blocks_unused                 | 346      |
| Key_blocks_used                   | 28995    |
| Key_read_requests                 | 6670738  |
| Key_reads                         | 78243    |
| Key_write_requests                | 296301   |
| Key_writes                        | 279275   |
| Last_query_cost                   | 0.000000 |
| Max_used_connections              | 1280     |
| Not_flushed_delayed_rows          | 0        |
| Open_files                        | 1264     |
| Open_streams                      | 0        |
| Open_table_definitions            | 32       |
| Open_tables                       | 1259     |
| Opened_files                      | 5224     |
| Opened_tables                     | 0        |
| Prepared_stmt_count               | 0        |
| Qcache_free_blocks                | 5        |
| Qcache_free_memory                | 11646624 |
| Qcache_hits                       | 46545    |
| Qcache_inserts                    | 6948     |
| Qcache_lowmem_prunes              | 0        |
| Qcache_not_cached                 | 363472   |
| Qcache_queries_in_cache           | 4985     |
| Qcache_total_blocks               | 9987     |
| Questions                         | 913794   |
| Rpl_status                        | NULL     |
| Select_full_join                  | 0        |
| Select_full_range_join            | 0        |
| Select_range                      | 0        |
| Select_range_check                | 0        |
| Select_scan                       | 0        |
| Slave_open_temp_tables            | 0        |
| Slave_retried_transactions        | 0        |
| Slave_running                     | OFF      |
| Slow_launch_threads               | 0        |
| Slow_queries                      | 0        |
| Sort_merge_passes                 | 0        |
| Sort_range                        | 0        |
| Sort_rows                         | 0        |
| Sort_scan                         | 0        |
| Table_locks_immediate             | 708202   |
| Table_locks_waited                | 45944    |
| Tc_log_max_pages_used             | 0        |
| Tc_log_page_size                  | 0        |
| Tc_log_page_waits                 | 0        |
| Threads_cached                    | 7        |
| Threads_connected                 | 1270     |
| Threads_created                   | 8911     |
| Threads_running                   | 1260     |
| Uptime                            | 76824    |
+-----------------------------------+----------+
233 rows in set (0.05 sec)

truth is out there...

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение zingel » 2008-07-25 9:28:03

многовато, мускул не справится с этим, нужно чекер под такое мыло ставить, да ещё на постгресе желательно (разносить базу и сам MTA на разные серваки, MUA - желательно тоже)
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение dikens3 » 2008-07-25 9:33:19

Как вариант второй сервак с mysql, а в exim прописать сервера через :

Т.е. hide mysql_servers = ...server1 : ...server2


show processlist глянь. Кэш увеличь. (query_cache_size = 128M)
Попробуй оттюнить mysql. Посмотри долгие запросы. и т.п.

P.S. exim должен кэшировать данные. Посмотри, что кэшируется что нет.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:35:37

zingel писал(а):многовато, мускул не справится с этим, нужно чекер под такое мыло ставить, да ещё на постгресе желательно (разносить базу и сам MTA на разные серваки, MUA - желательно тоже)
Такой возможности нет.
truth is out there...

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение zingel » 2008-07-25 9:36:16

если на одном оставлять, то нужно оперативки увеличить и ядро тюнить жестоко - добавить SysV
Z301171463546 - можно пожертвовать мне денег

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:39:27

dikens3 писал(а):Как вариант второй сервак с mysql, а в exim прописать сервера через :

Т.е. hide mysql_servers = ...server1 : ...server2


show processlist глянь. Кэш увеличь. (query_cache_size = 128M)
Попробуй оттюнить mysql. Посмотри долгие запросы. и т.п.

P.S. exim должен кэшировать данные. Посмотри, что кэшируется что нет.
посмотрел processlist, да почти все запросы связаны с грейлистингом.... query_cache_size стоит 16М, увеличу посмотрим... Если нет, тогда видимо придеться грейлистинг выкинуть...
truth is out there...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:43:05

zingel писал(а):если на одном оставлять, то нужно оперативки увеличить и ядро тюнить жестоко - добавить SysV
CPU: Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz
ОЗУ 2048 MB
2 винта по 250 гиг
truth is out there...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:46:21

по ядру вот:

Код: Выделить всё

[root@mail.host.ru] /usr/src/sys/i386/conf# less SMP-25022008
#
# SMP -- Generic kernel configuration file for FreeBSD/i386 SMP
#        Use this for multi-processor machines
#
# $FreeBSD: src/sys/i386/conf/SMP,v 1.5.6.1 2005/09/18 03:37:58 scottl Exp $

include GENERIC

ident           SMP-GENERIC-25022008

# To make an SMP kernel, the next line is needed
options         SMP                     # Symmetric MultiProcessor Kernel
options         SUIDDIR

options         SYSVSHM
options         SYSVSEM
options         SYSVMSG
options         SHMMAXPGS=65536
options         SEMMNI=40
options         SEMMNS=240
options         SEMUME=40
options         SEMMNU=120

options         MAXDSIZ=(1024UL*1024*1024)
options         MAXSSIZ=(128UL*1024*1024)
options         DFLDSIZ=(1024UL*1024*1024)


options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         DUMMYNET
truth is out there...

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение zingel » 2008-07-25 9:48:10

мало оперативки, нужно 4 минимум под 200 000 сообщейний/день
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение dikens3 » 2008-07-25 9:50:55

посмотрел processlist, да почти все запросы связаны с грейлистингом.... query_cache_size стоит 16М, увеличу посмотрим... Если нет, тогда видимо придеться грейлистинг выкинуть...
1. В полезных скриптах есть greylist на основе простых файлов.
2. Привентивные меры тебе нужны, блокировки по EHLO/HELO и т.п. чтобы разгрузить GREYLIST.
3. Редко изменяемые данные можно убрать из mysql (Количество доменов к примеру редко изменяется)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:53:27

Они есть, основной конфиг с этого сайта... Ед-ое если я правильно понимаю, первым делом работает грейлистинг, а уже потом всё основное...
truth is out there...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение dikens3 » 2008-07-25 9:55:03

kmb писал(а):Они есть, основной конфиг с этого сайта... Ед-ое если я правильно понимаю, первым делом работает грейлистинг, а уже потом всё основное...
У меня сначала идут всевозможные блокировки, а уже потом greylist.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 9:58:45

перенёс, подождем теперь несколько дней. :)
truth is out there...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение Alex Keda » 2008-07-25 11:23:43

200 тыщщ доставок или чего?
eximstat запустите с логом за один день - он скажет чего соколько.
========

Код: Выделить всё

ps -auxww | grep exim | wc -l
примерно в часы максимальной нагрузки - дайте...
Убей их всех! Бог потом рассортирует...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 12:00:53

200 тыщщ всего.
у меня eximstats не хочет работать: **** No valid log lines read.
=====
Ну в пике загрузке примерно 80-90
truth is out there...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение Alex Keda » 2008-07-25 12:09:17

ему надо оригинальный лог вкормить, а не из сислога
Убей их всех! Бог потом рассортирует...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-25 12:53:24

ясно, спасибо.
truth is out there...

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение kmb » 2008-07-28 14:20:57

Код: Выделить всё

ps -auxww | grep exim | wc -l
    1325
:cf:
truth is out there...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim&MySQL

Непрочитанное сообщение Alex Keda » 2008-07-28 14:31:29

тогда цифирки для муси маленькие.
у меня

Код: Выделить всё

max_user_connections    = 800
max_connections         = 1000
при этом когда было вдвое или втрое меньше - нехватало (у меня поток на порядок меньше)
значит вам надо увеличить минимум втрое.
Убей их всех! Бог потом рассортирует...