Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

超小規模環境のMySQL #mysqlcasual

3,516 views

Published on

2015/11/20に行われた MySQL Casual Talks vol.8 で発表した基調講演のスライドです。

Published in: Technology
  • Be the first to comment

超小規模環境のMySQL #mysqlcasual

  1. 1. 超小規模環境のMySQL OGATA Tetsuji (@xtetsuji) 2015/11/20 MySQL Casual Talks Vol.8
  2. 2. 自己紹介 • 尾形 鉄次 (OGATA Tetsuji) a.k.a. @xtetsuji • Blog: http://post.tetsuji.jp/ • Perlプログラマーで、最近はインフラもやっている
  3. 3. MySQL全然知らないのに 登壇することになった!
  4. 4. 小規模環境ということで 積極的に恥をかきにきました
  5. 5. 経歴 • 2003年から社会人としてIT企業で働き始める • 2005年頃からMySQLを使ったサービスをいくつか開発 • それと平行して他のプロジェクトの色々なヘルプもする • この頃は、RDBMS なら PostgreSQL or Oracle な時代
  6. 6. 会社成長でサービスが増える • 全社会議で経営陣が発言して運用保守サービスが増える • 「あの会社をM&Aしました」 • 「子会社を海外に作って受託開発始めました」 • 「聞いてないよ」とは言えず、自身の開発業務の傍らで 即日新しいサービスの保守運用業務が増える
  7. 7. とあるガラケーコンテンツ • オーソドックスな LAMP 構成 • 朝出社すると「おがたさん、サイトにログインできませ ん!」という慌てた企画担当者 • どれどれと思ってログインを試しても、普通にログイン できる • 安 しつつ、次の日の朝出社(繰り返し)
  8. 8. さすがに原因調査 • だいたい毎日これなので、調べてみる • エラー内容は「DBに問い合わせができない」だった • さらに調べてみると、アプリ(Apache)が永続的な MySQL接続をしていた • 朝になったらそれがタイムアウトしているという
  9. 9. MySQL接続のタイムアウト • 永続的な接続に長い間(たいてい数時間)データが流れ ていなかった、サーバ側から接続を切られる場合がある • クライアント側は接続しているつもりでもサーバ側から 切られる可能性があるので、pingなどの手段もある • アクセスの少ないサイトだと、永続的なMySQL接続をし ている prefork のサーバのうち暇なプロセスが見放され ることは結構ある(設定で頑張らない場合)
  10. 10. Morning Bug
  11. 11. Morning Bug
  12. 12. 夜にアクセスがない • アクセスログを見ても、夜にほとんどアクセスがない • 運が悪いプロセスは夜中完全に仕事が無い • Morning Bug の発生
  13. 13. pingで頑張る? • この話をすると ping とか設定ファイルとか、MySQLに 詳しい人達が色々教えてくれる • だけど、MySQLの接続コストは他のRDBMSに比べても 相当低いって言われているし(伝聞)、よほどの規模の サイトでもなければ都度接続でいいのではという結論
  14. 14. そのサイトの裏側は • その後、全社会議があって、そのコンテンツの担当者が 発表しているのを聞きました • 会員数が10人ほどとのこと
  15. 15. それ、全部 テスト端末では!?
  16. 16. 撤退できない人達への悲哀 (というのは置いといて)
  17. 17. 小さいプロジェクトの扱い • 2005年ごろから他プロジェクトの保守運用系のヘルプを するようになって分かったことは、企画担当者が「この サイトは大きくなりますので(備えてください)」と言 うサービスの半数以上は大きくなる前に終了する • 各プロジェクトには備えておきますという素振りを見せ ておいて、一つくらい当たったら捻出できるリソースは 準備しておく程度でいい
  18. 18. 「SQLiteで十分では」と 言いそうになったことも
  19. 19. MySQLプロトコルをしゃべる 別のものでもバレないのでは?
  20. 20. 小規模しかやらない開発者は • 長年 SQLのパフォーマンスを考えなくなる • N+1問題とか以前に、ソレはないよというSQLが • SELECT * FROM tbl; して毎回捨ててたり • ちょっとアクセスが増えるだけで楽しいです • 突然の DDoS !!!
  21. 21. 小規模でもMySQL • 小規模といっても、データストアを別のものにするのは 意外に面倒 • ファイルロックを正確に知っているプログラマーの方が 少なくなっているという衝撃の事実 • 複数ウェブサーバがNFS上のSQLiteファイルを読み込む とか逆に高度だし
  22. 22. 2015年の小規模 • クラウド全盛時代、RDSやAuroraで立ち上げて、ヒット しなければ縮退もカンタンだし、規模が大きくなっても 対応できる良い時代 • 10年前はオンプレサーバの出し入れから必要だったのが 遠い昔のよう
  23. 23. 手元にある小規模 • 社内の管理ツール等、普段ほとんどアクセスが発生しな いものは今でもたくさんある • 普通に素のPHPで都度接続のほうが健康的だったり • 大規模になってから考えるでいい場合がほとんどだし、 備えておいたから大規模になってよかったという事例は それほどなさそう(あくまで私感ですが)
  24. 24. 超小規模 ネタの量も超小規模
  25. 25. おしまい

×