[前][次][番号順一覧][スレッド一覧]

mysql:14575

From: Mikiya Okuno <Mikiya Okuno <okuno@xxxxxxxxxx>>
Date: Fri, 23 May 2008 19:49:30 +0900
Subject: [mysql 14575] Re: Can't connect to local MySQL server through socket (146)のエラーについて

こんばんは。奥野です。

荒井さん、以下のことについて調べてみて下さい。

mysqld が使用するファイルディスクリプタ数は十分でしょうか?
ソケットを開く場合、mysqld もファイルディスクリプタをひとつ
消費します。ファイルディスクリプタ数が足りないと接続を
確立することが出来ません。

myslqd のエラーログには何も出力されてないでしょうか?
mysqld が意図的にコネクションをクローズした場合は
何らかのエラーログが記録されているかも知れません。

上記以外の場合は DTrace で追跡するしかないですね。
とりあえず DTrace Toolkit の opensnooop でも使ってみましょう。
--
Mikiya Okuno
Support Engineer, MySQL KK

On 2008/05/23, at 19:11, junya_arai wrote:
> お世話になっております。荒井です。
> ご指摘の通り、エラー番号146は、connectシステムコールが
> 接続の拒否によって失敗した場合に発生すると認識しております。
>
>> 146 ECONNREFUSED
>>   * 接続が拒否されました。
>>   * 相手側マシンにより拒否されたので、接続を確立できませんでした。
>>     通常この状態は、リモートホスト上でアクティブになっていないサービスに接続しようとした場合に発生します。
>
> 146 ECONNREFUSEDが発生した時間に、別の常駐プロセスは接続できているため、mysqlは正常に動作していると
> 考えられます。
>
> また、ソケット接続のlistenの待ちキューのback_logが溢れた場合に
> 146 ECONNREFUSEDが発生すると思いますが、
> mysqlのback_logの設定値を調べた結果、50に設定されており、
> サーバ側でlistenしているキューの数が足りずに接続拒否になったとは、考えづらく思います。
>
> 以上調査した2ケースからは、接続拒否となった原因にたどり着けない状況です。
> そのため、他にエラー番号146が発生するケースについて、手がかりを探しています。 
>
> ご存知の方、手がかりをお持ちの方がおりましたら、ご教授頂きたく思います。
> よろしくお願いします。
>
>> 池田です。
>>
>> 追記です。
>>
>> すみません、タイトルにエラーメッセージ書いてありましたね。
>> 手元にSolarisマシンがないので146番が以下であると気づくのが遅れました。
>>
>> 146 ECONNREFUSED
>>   * 接続が拒否されました。
>>   * 相手側マシンにより拒否されたので、接続を確立できませんでした。
>>     通常この状態は、リモートホスト上でアクティブになっていないサービスに接続しようとした場合に発生します。
>>
>> 2008/05/21 18:48 Tetsuro IKEDA <ikdttr@xxxxxxxxxx>:
>>> 池田です。
>>>
>>> エラー番号146とのことですが、番号だけでなくメッセージも教えてください。
>>> 例えばこんな感じ↓↓で出力されたメッセージそのものをコピペしてもらえれば。 エラーメッセージは割とソース解析の手がかりになります。
>>>
>>> ERROR 2002 (HY000): Can't connect to local MySQL server through socket
>>> '/tmp/mysql.sock' (2)
>>>
>>> 以下のようにconnectシステムコールが失敗しているとのことですが、根拠は何ですか?
>>> (単なる推測でしょうか?あるいは他に何か情報をお持ちですか?)
>>>
>>>> 疑問点:
>>>> おそらく、mysql_real_connectライブラリーの中でのconnectシステムコールが
>>>> 失敗していると思いますが、なぜ146になるのかわかりません。
>>>
>>> mysqldがlistenするUnixソケット用キューの数はback_logで指定した値
>>> (デフォルト値=50)だと思います。
>>>
>>> sql/mysqld.cc:    if (listen(unix_sock,(int) back_log) < 0)
>>>
>>>> 1、mysqldでlistenしているUnix ソケット用キューの数は幾つでしょうか?
>>>>  mysqlのソース調査して見たのですが、よく分かりません。
>>>
>>> 勘違いだったらすみません。
>>>
>>> --
>>> Tritonn http://qwik.jp/tritonn/
>>> hatena http://d.hatena.ne.jp/mir/
>>>
>>
>>
>>
>> -- 
>> Tritonn http://qwik.jp/tritonn/
>> hatena http://d.hatena.ne.jp/mir/
>
>



[前][次][番号順一覧][スレッド一覧]

     14566 2008-05-21 20:37 ["junya_arai" <j.arai] Can't connect to local MySQL server through socket  (146)のエラーについて
     14567 2008-05-22 10:48 ┗["Tetsuro IKEDA" <ikd]                                       
     14568 2008-05-22 11:09  ┗["Tetsuro IKEDA" <ikd]                                     
     14574 2008-05-23 19:11   ┗["junya_arai" <j.arai]                                   
->   14575 2008-05-23 19:49    ┗[Mikiya Okuno <okuno@]                                 
     14585 2008-05-28 11:37     ┗["junya_arai" <j.arai]                               
     14586 2008-05-28 12:04      ┗[Mikiya Okuno <okuno@]