[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[postfix-jp: 3815] Re: postfixadminとの組み合わせで謎の現象
- Subject: [postfix-jp: 3815] Re: postfixadminとの組み合わせで謎の現象
- From: SATOH Fumiyasu <fumiyas@xxxxxxxxxx>
- Date: Thu, 29 Jul 2010 02:32:22 +0900
さとうふみやす @ OSSTech です。
At Wed, 28 Jul 2010 15:28:13 +0900 (JST),
大塚 総司(OTSUKA soushi) wrote:
> テスト環境でclueanupに-vをつけてログを出してみました。
***snipped***
> 02:38:21 srvXX postfix/cleanup[32191]: rewrite_clnt: local: otsuka??@example.jp -> otsuka??@example.jp
> 02:38:21 srvXX postfix/cleanup[32191]: been_here_check: otsuka??@example.jp: 0
> 02:38:21 srvXX postfix/cleanup[32191]: dict_mysql_get_active: found active connection to host 127.0.0.1
ここで 127.0.0.1 の MySQL へのセッションを見つけているのに対し、
> 02:38:21 srvXX postfix/cleanup[32191]: warning: mysql query failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
> 02:38:21 srvXX postfix/cleanup[32191]: maps_find: virtual_alias_maps: otsuka??@example.jp: search aborted
> 02:38:21 srvXX postfix/cleanup[32191]: mail_addr_find: otsuka??@example.jp -> (try again)
> 02:38:21 srvXX postfix/cleanup[32191]: mail_addr_map: otsuka??@example.jp -> (try again)
***snipped***
> 02:38:21 srvXX postfix/cleanup[32191]: mail_addr_find: test4@mail.msrv.dev.example.jp -> (try again)
> 02:38:21 srvXX postfix/cleanup[32191]: mail_addr_map: test4@mail.msrv.dev.example.jp -> (try again)
こちらでは何も見つけていません。(有効な MySQL セッションが存在しない)
> 02:38:21 srvXX postfix/cleanup[32191]: warning: 786321A00DA: virtual_alias_maps map lookup problem for test4@mail.msrv.dev.example.jp
> 02:38:21 srvXX postfix/cleanup[32191]: been_here: rfc822;test4@mail.msrv.dev.example.jp?0?test4@mail.msrv.dev.example.jp?test4@mail.msrv.dev.example.jp: 0
src/global/dict_mysql.c をよく見たところ、「mysql query failed」した
後に plmysql_down_host(host) を実行しています。plmysql_down_host() が
何をしているかというと、次のようになっています:
/*
* plmysql_down_host - close a failed connection AND set a "stay away from
* this host" timer
*/
static void plmysql_down_host(HOST *host)
{
mysql_close(host->db);
host->db = 0;
host->ts = time((time_t *) 0) + RETRY_CONN_INTV;
host->stat = STATFAIL;
event_cancel_timer(dict_mysql_event, (char *) host);
}
つまり、RETRY_CONN_INTV 秒 (60 秒固定) の間は STATFAIL (異常) 扱いに
します。結果、60秒間はこの MySQL セッションは使えなくなります。
問題の回避方法ですが、src/global/dict_mysql.c の
「mlmysql_down_host(host);」を「mlmysql_close_host(host);」に
書き換えれば即座に有効になって再接続されますが、MySQL サーバーを
複数立てていて Postfix からそれらを参照しており、MySQL サーバーの
フェイルオーバーを期待したい場合にうまい具合に動作しなくなると
思われます。
MySQL に詳しくないのですが、plmysql_connect_single() 内の
mysql_real_connect() の成功後に「mysql_set_character_set(host->db, "binary");」
を追加すると回避できないでしょうか?
> また、SQLクエリログも一緒に付けています。
> クエリログでは一応、test4@mail.msrv.dev.example.jpをselectしたクエリが残って
> います。
クエリは発生しないはずなんですが、何か見落しているのかなぁ。
--
-- Name: SATOH Fumiyasu (fumiyas @ osstech co jp)
-- Business Home: http://www.OSSTech.co.jp/
-- Personal Home: http://www.SFO.jp/blog/
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list
- Follow-Ups
-
- [postfix-jp: 3816] Re: postfixadminとの組み合わせで謎の現象, OTSUKA soushi
- References
-
- [postfix-jp: 3812] postfixadminとの組み合わせで謎の現象, OTSUKA soushi
- [postfix-jp: 3813] Re: postfixadminとの組み合わせで謎の現象, SATOH Fumiyasu
- [postfix-jp: 3814] Re: postfixadminとの組み合わせで謎の現象, OTSUKA soushi
[検索ページ]
[Postfix-JP ML Home]