超小規模サイトのdb運用 #machidapm

15
超小規模サイトの DB運用 尾形 鉄次 (OGATA Tetsuji) Twitter: @xtetsuji 2013/12/9 Machida.pm #1

Upload: tetsuji-ogata

Post on 28-May-2015

626 views

Category:

Technology


3 download

DESCRIPTION

2013/12/09に行われたMachida.pmで発表したトークのスライドです。テーマが「データベースとORMapper」だったのと、直前まで発表者がほとんどいなかったこともあって、多少ネタ的な内容で軽めの話をしてみました。

TRANSCRIPT

Page 1: 超小規模サイトのDB運用 #machidapm

超小規模サイトのDB運用

尾形 鉄次 (OGATA Tetsuji)

Twitter: @xtetsuji2013/12/9 Machida.pm #1

Page 2: 超小規模サイトのDB運用 #machidapm

自己紹介

• 尾形 鉄次 (OGATA Tetsuji)

• Twitter: @xtetsuji

• Blog: http://post.tetsuji.jp/

• 北海道生まれでよくHokkaido.pmに行く

Page 3: 超小規模サイトのDB運用 #machidapm

地域.pmに行きたい• 東京やその周辺の、行くことができる地域.pmには精力的に行きたい

• コミュニケーション大事

• 北海道には帰省で行くし、他の場所にも旅行目的で行きたい

Page 4: 超小規模サイトのDB運用 #machidapm

大規模事例のDB運用とか見飽きた人~

Page 5: 超小規模サイトのDB運用 #machidapm

今日は超小規模運用のDB事例です!

Page 6: 超小規模サイトのDB運用 #machidapm

DBの接続コスト• MySQLは他のDBより接続コストが低いと言われている

• 都度接続でも問題無い→PHP等でGood

• それでも大規模環境では接続を保持しておくことが多い

Page 7: 超小規模サイトのDB運用 #machidapm

DBの接続保持

• DBI->connect() のオブジェクトをパッケージ変数として永続化しておく

• mod_perlであればApache::DBIを使えば透過的に接続維持ができる

Page 8: 超小規模サイトのDB運用 #machidapm

超小規模の場合

• 夜中にアクセスがほとんど来ない!

• preforkプロセスのうち、たまたま日没から日の出まで全くアクセスを受けない、運がよいのか悪いのかわからないプロセスが出てくる

Page 9: 超小規模サイトのDB運用 #machidapm

超小規模の場合

• 朝出社すると「時々ログイン出来ませんってエラーが出ます」ってディレクターが必死にサイトいじっている

• なんだろうと思って調べ始めてももうエラーがでなくなっている

Page 10: 超小規模サイトのDB運用 #machidapm

Morning Bug

• こういう「朝にログイン出来ない」といったバグのことを「Morning Bug」という(本当です)

• 大規模サイトではほとんど出会わず、このバグは超小規模サイトでのみ出る

Page 11: 超小規模サイトのDB運用 #machidapm

さてなぜでしょう?

Page 12: 超小規模サイトのDB運用 #machidapm

DBから接続断される• stateにしておいた$dbhはDBの設定にもよるが、6時間とか12時間とかのスパンでアクセスされないと、DB側から接続が切られる

• $dbh はオブジェクトとして有効なので$sth->prepare()等の段階でエラーになる

Page 13: 超小規模サイトのDB運用 #machidapm

Morning Bugの回避• 超小規模サイトなら、MySQLの接続コストは他のRDBMSに比べて無視できるくらいなんだし永続接続とか考えないほうがよい場合が多い

• ハマるとわからないケースが多い

• my.cnf の調整とか考えなくてもよさげ

Page 14: 超小規模サイトのDB運用 #machidapm

結果的には• 会員数二桁くらいのサイト、さっさとやめたほうがいい!!!

• 超小規模サイトだけでなく、社内ツールをこういう構成にするとMorning Bug

に遭遇するケースもあるから注意

• 社内ツール、CGIがいいケースもある?

Page 15: 超小規模サイトのDB運用 #machidapm

ご清聴ありがとうございました