原因と対処について簡単に書きます。
58分問題をみてみようとninja.2ch.netにログイン
↓
原因元のスクリプトを弄ってるとMySQLが詰まりだす
↓
maido3の中の人がリブート
↓
忍法帖DBが更新されずさらに壊れる
↓
よくわからないので強制Lvセット+P付与するように修正
↓
寝る〜出勤〜帰宅
↓
一部DB情報をリセット
↓
スクリプトを元に戻す
というわけで、ごめんなさいー。。。
がねさんお疲れす
手を入れようにも、その前に解読・解析作業が必要となると無理ゲー攻略コースすね
NTTechの鯖メンテ第一弾は無事に終わったのかな
関連スレを見る限り2chで大騒ぎはなかった様子
第二弾もつつがなく終わりますように
あ、banana3746はhack72だけでなくqb5、qb7も同居でしたね
もうちょっと詳しく。
・58分問題
cronで58分に実行するDBクリーンアップスクリプトが多分犯人。
最後(最初?)に新規忍法帖を更新してから60日経ったものを消す処理。
対象テーブルはMyISAM、100万行、where条件はUNIX時間のカラム(非INDEX)。
処理が終わるまで50秒程。
処理件数は大体1000件程度。
limit 100 でループする処理を入れてみた。
・MySQLの詰まり
Too many connectionsが発生。
dmesgにkern.ipc.maxpipekva exceeded; see tuning(7)が表示。
root無いのでspeedyとhttpdをkillしてみるもだめぽ。
・リブート後
何故か忍法帖DBが更新されない。
というか、新規忍法帖が発行されない。
mysqldumpしてどのテーブルをリセットしたらいいか試行錯誤。
Redisを見つけるもよくわからない。
朝4時で眠いので、LvとPを強引にセットして返すように変更。
・Redisのリセット
perl -MRedis -e '$r=Redis->new(server=>"127.0.0.1:6379");for(2,3){$r->select($_);for($r->keys("*")){$r->del($_);}}'
・SQLクエリの修正
Uniq Indexが設定されてるカラムでSelectするときにlimit 1を入れてみた。
同様にUpdateするときもlimit 1するようにしてみた。
そろそろ時間やばいので出勤してきます。。