タグ別アーカイブ: 最適化

MySQLデータベースの負荷を無くしたい!Key-Valueストア導入


MySQLデータベースの負荷を無くしたい場合、memcachedなどのKey-Valueストアの導入

がおすすめです。

WEBサービスの場合、スタート時には分からなかった利用状況によるサーバー負荷!

利用するユーザーが増えてくるにしたがいサーバー上のボトルネックを調査する作業が

発生してきます。

ハードウェアのスペックが新しいものの場合、CPU、メモリー、ディスクのIOなどは

あまり考えなくていいかと思います。

それより、Apacheのプロセス、MySQLなどのデータベース、WEBアプリケーションを重点的に

調べた方が、改善効果がきたいできます。

まあ、一番はMySQLのクエリー結果を早くすること!だと思います。

1リクエストで何回もSQLが実行されるようなシステムの場合、SQLの実行回数を減らすだけで

改善されます。

では、どのようにSQLの実行回数を最適化するのか?!


①重要度が低いログ系などのSQLを思い切って停止する

②Key-Valueストアにデータの一部を移行させておく

などなど

①については、クライアント様の運用スタイルに制限されてしまい、万が一の時にトラブルを招く恐れがあります。

そう、一番良いのは、Key-Valueストアなどにデータの一部を移行して利用することです。


Key-Valueストアのほとんどはメモリー上で動作するので、速度がリレーショナルデータベースに比べて

格段に高速です。

Key-Valueストアは、いくつも種類がありますが、一番メジャーで導入も簡単なmemcachedがおすすめです。

再起動などデーモンが落ちるとデータはなくなりますが。

最近では再起動してもデータが保存されているタイプが人気があります。


速度的にはリレーショナルデータベースより早くなるので

どのKey-Valueストアを導入するかは、データの扱い易さ、再起動時のデータ有無で判断すると

いいでしょう。

次回は、各Key-Valueストアのベンチマークをしてみたいと思います。

ImageMagick サムネイル画像作成 高速化&最適化


■高速に変換(サムネイルを作成)

元ファイルのサイズが分かっているとき

convert -define jpeg:size=160×120 -resize 160×120 moto.jpg saki.jpg


■ファイルサイズを小さくする(不要な情報を削除)

convert -thumbnail 160×120 moto.jpg saki.jpg

自社のWEBサービスで画像管理する場合は、できるだけファイルサイズを小さくしたいものです。

スマートフォンsで小さな画像をたくさん表示する場合は、そのコンパクトさに重宝します。

ただ変換した画像をWEB共有サービスで利用する場合は、EXIF情報が削除されているので、自分で情報を一から入力する手間がありますが・・・。


apache2 worker MPM でWEBサーバーの最適化・チューニング


マルチコアなCPUで最も効果が期待されるとして、apache2は、worker MPMで動作させるのが良いと言われています。

無駄なプロセスを管理しながら、効率の良いリクエスト処理が行われるので

弊社でも積極的に負荷の多いWEBサービスには導入を検討しております。

唯一気を付けなければいけないのは、PHPをmod_phpからmod_fcgidなどに変更した方が

後々のトラブルにも対応できそうです。公式HPにも記載がありました。

mod_phpでworkerを利用すると、予期せぬphopの不具合でプロセス自体がダウンし他のリクエストに影響がでるからです。

まあ、極端に負荷がかかった場合とか、メモリーリークなど以外ではあまり不具合もでないので気にしなければ運用もできそうですが。

今日は忘年会!この辺で失礼します(早)