島村 優太郎
ml****@ryne*****
2006年 12月 8日 (金) 14:48:34 JST
島村です。 以前からSenna+MySQLの高負荷で落ちる、という現象は LinuxThreadsを使用することで少しは強くなるようです。 (@FreeBSDでpthreadを使用していた場合) 他に報告が来てる落ちる現象が どのようなものかわからないので、 なんともいえないのですが、、 FreeBSDの場合で ネイティブスレッドを使用したバイナリだと、 負荷が高くなったときであればいつでも落ちました。 (というより、あまり強くない?) デバッグフラグを立てるとさらに弱くなりました。 これはportsからインストールしたMySQLでも、ソースでも 同様でした。 特にプロセスが確保しているメモリの量が多いと、 スレッドの切り替えがうまく動かないようです。 基本的に256MB以上を確保すると 次第にアラが出始めました。 (amd64ではなく、i386+PAEですが‥) しかしながら、LinuxThreadsを使用しても 負荷がかかりすぎると落ちてしまいます。 空きメモリは2GB以上あったのですが、以下のエラーで止まって しまいました。 mysqld got signal 10; This could be because you hit a bug. (...) key_buffer_size=33554432 read_buffer_size=1044480 max_used_connections=3 max_connections=35 threads_connected=1 It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size) *max_connections = 104307 K bytes of memory Hope that's ok; if not, decrease some variables in the equation. Sennaを使用していないMySQL(4.0.27)+LinuxThreadsは 現在メモリを1400MB近くまで固定していますが、問題は出ていま せん。 Senna(rev261)を使用したMySQL5.0.27+LinuxThreadsでは、 落ちた、というよりはソケットもpidファイルものこしたまま反 応しなくなります。 一応、接続が出来ないのでkill -ABRT `cat *.pid`で再起動させ ました。 張ったインデックスは300万records/400MBのテーブルでし た。(INITIAL_N_SEGMENTS=192) 大きなテーブルにインデックスを張る場合に、 何かコツみたいなものがあるのでしょうか? ------------------☆ 島村 優太郎 yu.sh****@gmail***** ------------------☆