Apache + PHP + MySQL で「Lock wait timeout exceeded; try restarting transaction」がでるときの対策。

Apache + PHP + MySQL で「Lock wait timeout exceeded; try restarting transaction」がでるときは、PDO::ATTR_PERSISTENTやmysql_pconnect等でコネクションプールをしている時のトランザクションに問題がある。なので、MySQLの接続アカウントを更新用と参…

Rails 3.1.3 から Rails 3.2.11 にアップグレードのメモ。

脆弱性対応でRailsをアップグレードしたのでメモ。http://www.atmarkit.co.jp/ait/articles/1301/10/news081.htmlこれまでメインで使っていたのが Rails 3.1.3 でこれを 3.2.11 にアップグレード。 ざっくりやった内容をメモ。【アップグレード先サンプル準…

CakePHP2.2のバッチ用ファイルの置き場所とファイル名のルールはCakePHP1.3と違う

CakePHP2.2で試してはまったのでメモ。諸事情でCakePHPでバッチ処理を書こうと思い立ちまして、2.0のガイドが英語なので、どうせ似たようなもんだろうって思って1.3用の日本語ガイド読みながらコピペしたりして試したんですよ。そしたら、なんか↓みたいなエ…

ActiveRecordでset_table_nameを使わずにテーブル名を変えてクエリを実行する

Rails 3.1.3で試した。影響の大きいset_table_nameを使わずに、O/RマッパーとかSQL生成とかActiveRecordの便利な機能を使いつつ、別名のテーブルにクエリを実行する。 # "Hoge"というモデルがあって、デフォルトで関連づけられた "hoges" テーブルではなく、…

HTTPステータスコード499のとき、GETリクエストが即座に再送される?

nginx 0.8.x をリバースプロキシにして、unicorn + rails の構成。なんか、全く同じパラメータのGETリクエストが2回飛んで来ることがある。 それで、一回しか処理しないつもりのものが二回処理されて地獄発動。アクセスログをみてみると、同じ時間に全く同じ…

Rails(というかAcriveRecord)で日次テーブルに書き込む(保存時に保存先テーブル名を変更する)

Rails 3.2.2で試した。ログテーブルのように日次で保存先を切り替える需要があります。 ActiveRecordは通常、クラス名とテーブル名が一対一で関連付いているので、切り替えは切り替えを書いてあげる必要があります。set_table_nameをクラス定義部分で書く方…

【訂正】Railsでconnection数を破綻させずにestablish_connectionで別DBを利用する

前のエントリ(http://d.hatena.ne.jp/raugisu/20120428/1335598633)で、ActiveRecord で別DBに接続するために establish_connection を安易に使うことで発生する地獄について書いた。 んで、その地獄への対策として挙げたもののなかで、一番良いと思われる…

ActiveRecordのestablish_connectionに気をつけろ

Rails3.1.3の話。別DBにつなぐときの、ActiveRecordのestablish_connectionに気をつけろ。やつは1クラスごとに独自にdatabase.ymlのpool設定分のコネクションプールを作るぞッ。プールの意味ない!!マスターDB1台で運用しているときは全然問題ない。コネク…

Linuxでバッチのログを書き出し中のファイルを消して死ぬかと思ったが助かった話

諸事情で結構でかいデータの処理をすることになった。 かかる時間とかをログに出して計測しようと思って、標準出力をリダイレクトさせて放置してたんですわ。んで、まあ、うっかり消しちゃった。 絶賛書き出し中の、そのファイルを。一瞬死ぬかと思ったんだ…

mysql2 アダプタなら、IDにBIGINTを使っても大丈夫。

諸事情でRailsのActiveRecordで使ってるテーブルのidがbigintだったりして、心臓が止まるかと思いました。 使ってるシステムは「Rails3 + mysql2」で助かった、というお話。「rails bigint」でググるとでてくるんですが、Railsでidにbigintを使うと値が32ビ…

nginxでロードバランサー。httpとhttpsの両方で使う

仕事でhttpとhttps両方使う必要がでてきた。サーバー構成は複数のアプリサーバーをロードバランサーで処理振り分けをする、よくあるタイプ。問題はhttpsで、複数あるアプリサーバーにそれぞれSSL証明書をインストールすると、手間もかかるがお金もかかるので…

MySQL5.5のcreate temporary tableが激烈遅い

ひどい目にあったので書く。ストアドプロシージャベースで構築されたWEBシステムを、MySQL5.5に載せて運用を始めたところ、本稼働後数時間でデータベースのレスポンスが激烈に悪くなった。別に破綻するほどアクセスが殺到した訳でもなく、サーバーのスペック…

Debian ( wheezy/sid ) で パスワードが変えられない

Debianサーバーをwheezy/sidにアップグレードしてみた。 んで、作業用アカウントhogeとかつくって、パスワード設定するじゃないですか。 passwd hoge こんな風に。 そしたら、 Current Kerberos password: とか聞かれて、そんなの設定してないのに! と大変…

Linuxサーバー設定メモ(OSチューニング)

Linuxサーバー(主にCentOS)のOSチューニングについて、メモをまとめておく。 自分がセッティングするときに好んで仕込むおまじない。 ■午前四時の高負荷の原因を止める。 mlocateとかmakewhatisとかは行われる処理はサーバーの仕事自体には関係ない。 なの…

LVMパーティションは単純にマウントできなくて困る

KnoppixでLVMをマウントする http://d.hatena.ne.jp/t_fujii/20080213/1202881419 1、サーバーが動かなくなった 2、HDDを引っこ抜いてデータを吸い出そうとした 3、LVMパーティションって直接mountできなくて涙目 (mountコマンド打つとファイルシステム…