2012-01-01から1年間の記事一覧

「INSERT INTO 〜 SELECT 〜」のSELECT結果を「ON DUPLICATE KEY UPDATE 〜」で使う

「ON DUPLICATE KEY UPDATE」という構文がMySQL独自のものと知ったときは軽くショックを受けました*1。まあ、そんなことはどうでもいいんです。 通常、「INSERT INTO 〜 SELECT 〜」ってGROUP節を使って集計したものをどっかのテーブルに入れるとかっていう…

Nginxで静的ファイルをPOSTで取れない

htmlファイルやtxtファイルといったAPサーバーに送らず、Nginxが自ら処理するアクセスをPOSTで取ろうとすると405エラーを返すという挙動になっているようです。通常のブラウザアクセスではほぼ起こり得ないパターンですが、ネイティブアプリ向けAPIを作って…

UDPサーバー立てたらハマった件

UDPパケットの受信は出来るっぽいが送信が出来ない!何故!? 色々調べてみた結果*1、「ニフティクラウドのサーバー」かつ「CentOS6系のOS」でこの現象が起こることまではわかった*2。 で、それを元にいろいろググってみるとひとつ怪しい情報にぶち当たる。…

Nginx ⇔ php-fpmの接続をTCPからUNIX Socketにしたら(何故か)性能が劣化した件

とあるサービス(と言ってもこのブログで散々言及してきた「あの」アプリのサーバーです)で、普通の「Apache with mod_php」な構成から「Nginx with php-fpm」な構成に変え、しばらく安定して稼働していた*1ので、さらなるパフォーマンスを目指してTCPなPor…

MySQLがダメならPostgreSQLしかないのか

巷ではOracleがMySQLをオープンソースじゃなくする?*1みたいな噂が駆け巡ってますが、なにも本家MySQLじゃなくたって、MySQLからフォークしたRDBMSがいくつかあるんですよ。ブコメの反応とかで疑問に思っていたのは、何故すぐに「PostgreSQLに移行しないと…

rbenv on Cron

Cronでrbenvで動かしてるruby*1を動かすのに手間取ったので備忘録として。 前提条件 rbenvの設定は/etc/profileの中で行っている ユーザーごとにrbenvの設定があるわけではなく、全ユーザー共通のrbenvがあるため 普段はログインシェルとしてzshを使っている…

MySQLでテーブルの全件をちょっとずつ持ってきて処理したいときに注意すること

「全部で100万件とか1000万件とかあるような、でっかいテーブル内のデータを全部持ってきて特定の処理を加えた後にどっかに入れる」というような処理をしたいときに注意すること。通常はLIMITを使ってオフセット/リミットで絞ってちょっとずつやる、みたいな…

「○○」という文字を含むテキストファイルのうち「××」という文字を含まないテキストファイル一覧を出す

grep -lR '○○' /xxx/dir/|xargs grep -L '××'

Redmineを2.0.0にアップデートした

Ruby全然分かんないんですけど割とすんなりいきました。 Redmineをアップデート まあ普通にファイル類を置き換えるだけなんでここはとっても簡単です。 一応DBとかfilesディレクトリはバックアップしておけとのことなんで適当にバックアップする mysqldump -…

「net.ipv4.tcp_tw_recycle」を有効にするのは(場合によっては)やめた方がいい

そもそも「tcp_tw_recycle」ってなに? TIME_WAIT状態のソケット*1を高速に再利用するためのLinuxカーネル特有の仕組みらしい。「/etc/sysctl.conf」でこいつ(net.ipv4.tcp_tw_recycle)を1にしてやって「sysctl -p」するだけで有効になります。「TIME_WAIT…

さくらVPSで一般的な?LAMP環境を構築する

プランが一新され、今借りてるメモリ1.5Gのプランと同じ値段でCPU3コア、メモリ2Gが借りられるということで移行することにした。 その際に、イチから構築したのでその備忘録。 注意 自己流。 とりあえずログイン VPSの作成が終わるとさくらからメールが来る…

続・間違いだらけの負荷対策

事の始まり 3月に入ってから「斉藤さん」のWebサーバーのピークタイムでのアクセス数が秒間180アクセスを境に動かなくなり、しまいには一部アクセスが固まって動かなくなるという現象が発生した。Apacheのエラーログを見ると、データベースサーバーに接続で…

Nginxで2週間ほど『斉藤さん』のサーバーサイドを運用してみて

考察 同時アクセス数が大きくなると(感覚では秒間150〜160前後)後ろが詰まってアクセスを取りこぼすことがある。下のグラフの0時前後(23時ちょうどと0時過ぎくらい)に注目。グラフが途切れている部分はアクセスが集中し、munin-nodeがステータスページへ…

お手軽メッセージキュー「Kestrel」を使ってみる

いきさつ ついに『斉藤さん』が北米・UKなどで公開されたらしいです。 海外ではウケるのかどうか未知数ではありますが、さらにアクセス数が増えると思うとgkbrな日々です。今のところWebサーバーのプロセスが比較的スムーズに処理されているようなので問…

ディスクの中にあるディレクトリをサイズ順に並べるPHPスクリプト

セーフモードが有効だと多分動きません。

Nginx de PHP

昨日書いたのがあまりに技術っぽくない(の割に結構見られてて恥ずかしい)ので、一応フォローのため「NginxでPHPを使う」ということに的を絞って書きます。 注意 基本的に「CentOS(バージョン5.7)環境での動かし方」を書いています ソースからビルドする…

実録・間違いだらけの負荷分散(『斉藤さん』編)

特に記録を残さず、記憶に頼って書いているので一部曖昧だったり誤っている部分もありますがご了承下さい。。。 基本的に細かいこと考えずに試行錯誤しているので、あんまり参考にしないほうがいいと思います。 というかインストール方法とかコマンドライン…