Aborted_clientsとAborted_connects

show global statusで検索したところ、システム変数の値がおかしかった。

どういう状態でおきるかmysqlのマニュアルをみてみる。

以下が発生したと考えられます。

クライアントプログラムが終了前に mysql_close() を呼び出さなかった。

クライアントが何の要求もせずに、wait_timeout または interactive_timeout より多くの時間スリープ状態であった。 See 項4.6.8.4. 「SHOW VARIABLES」。

クライアントプログラムが、転送中に突然終了した。

上記のことが発生した場合、サーバ変数 Aborted_clients の値が増えます。

以下の場合、サーバ変数 Aborted_connects の値が増えます。

接続パケットに正しい情報が含まれていない場合

ユーザにデータベースに接続する権限がない場合

ユーザが間違ったパスワードを使用した場合

接続パケットの取得に、connect_timeout で指定されている秒数より多く要した場合 See 項4.6.8.4. 「SHOW VARIABLES」。

上記のことは、不正ユーザがデータベースに侵入しようとしている可能性を示しています。

中止されたクライアントおよび中止された接続エラーのその他の原因

Linux での Ethernet プロトコルの使用(半二重と全二重)。 多くの Linux Ethernet ドライバには、このバグがある。2つのマシン間で ftp を使用して大きなファイルを転送し、このバグについてテストする必要がある。
転送が burst-pause-burst-pause … モードで行われている場合は、Linux 二重シンドロームに陥っている。 唯一の解決策は、ネットワークカードとハブ/スイッチの二重モードを、全二重または半二重に切り替え、その結果をテストし最も良い設定を行うことである。

読み取りの中断の原因になるスレッドライブラリの問題。

TCP/IP の設定間違い。

不良 Ethernet、ハブ、スイッチ、ケーブルなど。これは、ハードウェアを交換してみることでしか正しく診断できない。

max_allowed_packet が小さすぎるか、クエリが mysqld に割り当てられたメモリより多くのメモリを必要としている。 See 項A.2.9. 「Packet too large エラー」。

該当しそうなところはwait_timeとconnect_timeout の可能性がある。あるドメインに対してはクローラがDOS攻撃にも似たようなアクセスをしているのでこの結果でてしまうのかな?

とりあえず。様子見してみる。

※追記

時間がたったのでshow global status;を実施。数値がふえてないのでwati_timeが関連していていたと思える。デフォルトは8時間なんでこれを60秒に変更したが、数値がでていたので60分に変更。Aborted_clientsとAborted_connectsと両方でいたのでまともな接続ができてないとmysqlが判断したんでしょう。ただ、wait_timeのエラーがでてきたら、変更せざるえませんな。しかし、mysqlの初心者にここまでやらせるのはきついね。