サーバーが遅い7つの理由 WEBサーバーチューニングの前に | ITオフィスサポートとシステム開発|システムガーディアン AWSクラウド導入|東京都中央区八丁堀

ITサポート出張、ITシステム開発・保守をワンストップで|AWSクラウド|東京都中央区八丁堀

ITオフィスサポートとシステム開発|システムガーディアン AWSクラウド導入|東京都中央区八丁堀

電話でのお問い合わせ

サーバーが遅い7つの理由 WEBサーバーチューニングの前に

      2016/04/08

サーバー スペック メモリ 診断 どれだけ 必要か 設定例 スペック

 

弊社ではサーバー高速化ソリューションをご提供していますが、チューニング前に診断としてリソース具合やボトルネックの有無を事前調査させて頂いています。

 

高速化の為のミドルウェアのチューニングの他に、実はプログラムのボトルネック対応も大きい部分だったりします。クライアント様システム固有の部分も多く、詳細は公開できないのですが、よくあるパターンをご紹介します。

サーバーが遅い原因はエラーが起こっている

これが一番多い原因がかもしれません。

実際にサーバー内部で動かしているスクリプトやモジュールにて設計的にミスをしており、構築・設計時には問題がなかったのに環境をアップデートした事によるエラーが出ることも多いです。実際にはエラーが出ているのに、スクリプトの設定で非表示にしており、毎分数十MB単位でエラーを吐いていることもあります。これではIOが勿体ないですね。

 

無駄なエラー処理で負荷がかかりますし、遅くなります。しいては不安定さに繋がります。エラー通知でサーバー容量が一杯になり処理できなくなることもあります。プログラムを動かすだけでなく、ぜひ、サーバーの悲鳴に耳を傾けた開発を。

 

特にPHPなどのスクリプトは変数の扱いが柔軟な故にアクセス毎に通知エラー・・・×1000×n。関数の引数記述ミス、初期化処理の忘れなどありがちで、大量にあると性能低下、あらゆる不具合に。また確認の際にログが多すぎると全て確認するのに障害時の切り分けが困難になります。だからと言って、ログレベルを上げて無視するのは良くありません。Noticeレベルに起因する箇所が動作不良の原因である事があります。ミドルウェアは多少エラーがあっても起動出来る事が多いですが、動作が不安定になりがちです。

 

ぜひ、まずはこちらを行いましょう。

重い処理がある

重要ではない機能で重いものがある場合、お客様と相談して切り捨ててしまうという手があります。重要ではないのだから。

 

特にサードパーティ製のプラグインなどは気をつけてみましょう。

例としてはWordPressで”使ってないけど入れている”というプラグインが原因というのも時々見かけます。

 

メモリリークが起こっている メモリがいつまでも開放されない

これは該当箇所を探すのがとても大変です。砂漠で花を探す。エラーであればログがありますがループ処理はエラーでないだけに、探すのが大変です。もちろん開発環境で行ってもらえば直ぐ見つかりますが、オープンソース系のプラグインなどを入れて競合する場合などはサーバー上で探すのは困難です。

 

対策としては、メモリを開放するようにコードを修正するのが一番です。古いプログラムでありがちで、バージョンの高いプログラムはメモリの扱いが改善されているので、バージョンの高いもので動くように対応するなど。放置すると不安定さに繋がります。

 

サーバーに数人が同時にアクセスすると落ちる

大量の処理遅延。SSHも応答しなくなることもあります。

プログラム設計上のエラーの可能性が高いですが、ループしているなど理由はさまざま。

while(1){echo “絶望がありあまる”;}

ループは既定の設定により一定時間や処理で一応終わるものの、無駄なループがあるケース。階層絡みのループで取得して表示処理する箇所など追っていくしかありません。

 

クエリ実行が長い

サーバーが遅い理由でよく見かけるのが、データベースへの命令が10秒以上処理にかかっていたりすることも見かけます。

こちらはクエリの改善やテーブルやカラムの設定を変更する対応が必要です。

 

データベースが落ちる

データベースが遅い事に続いてデッドロックの可能性があることがあります。トランザクションがあってもロールバック処理がなかったりするなど。処理の追加、サーバー側でタイムアウト設定など対応が多いです。

 

既にクラックされている

WebShellやウィルスなど不正なプログラムが設置されてしまっている、rootやadminを第三者に取られて外部に攻撃を行っているのも見かけます。お客様の提供するアカウントではサーバーログインが不能!?よくあるのがIP接続制限によるもので音信不通の元開発者のネットワークからしか入れないとか。契約前の調査で、既に予戦が始まっている

 

そんなわけでSSHが不能な場合は裏口から解決する事が多いです。鍵認証していてもこれだと意味あるのかな?とちょっと疑問ですが、仕事では助かっています。CMSの場合は人気のCMSほど攻撃されやすいので、攻撃を感知する仕組み、管理画面のURL変更・IP制限など攻撃されにくい仕組みを用意するのが有効。

 

お客様に聞くレンタルサーバ屋さんの対応

1つのサーバーにたくさんのユーザを収容するレンタルサーバ屋さんは、サーバーに負荷をかける問題のあるプログラムをユーザが動かしている場合、プログラム改善の勧告を行い、ユーザ側で対応が出来ない場合は1日~3日で契約解除になる場合が多いようです。安価なサービスなのでしょうがないのかなと・・・。中には1ユーザの為にフレキシブルに奔走してくれる驚くべきサーバ業者さんの存在もあり。凄い。

 まとめ

 

問題のあるプログラムもひとまずキャッシュによりそこそこ早く動いてしまうので、ちょっとしたものならサービス内で対応していますが、中規模なシステム全体に及ぶ改修となるとクライアント様の予算がおりにくく、不安定になるのはわかっていても対応が難しい場合もあったりなかったり。暫定処置としてプロセスが落ちても即座に自動再起動する仕組みやCronで適度に開放対応するなど予算などの条件の中でベストを尽くしています。ぜひお気軽にご相談を

 

 

優 ( 担当エンジニア )

 

システムガーディアン爆弾処理班
アクセス負荷対策などNginxへの移行案件が多いこの頃。AzureやAWSなどクラウド案件も多くなってきました。

 - Linux/UNIX, テクニカル

  関連記事

AWS EBS 拡張 EC2 容量
AWS EC2のルートディスク容量 EBSの拡張

今回はルートディスク容量を拡張しようと思います。EC2のデフォルトでインスタンスを作ると8GBなので、今回は20GB程度にする予定。   目次1 AW …

AWS WordPress構築 Auto Scaling 設定
AWS EC2 Auto Scaling オートスケーリングの設定

今回はAWSのAuto Scalingの設定をご紹介。   Auto Scalingは簡単にいうとサーバに負荷がかかると、Auto Scaling g …

MySQL
MySQL 認証ファイルを使ったrootログイン

DBサーバのメンテナンスシーン。  

ここでrootパスワードを入力することになりま …

.htaccess 画像直リンク ブロック
画像の直リンクをブロックする Apache .htaccess Nginx

目次1 ギャラリーぶっこぬきサイトが作られている!2 基本は個別のドメイン対応3 直リンクの不許可(自サイトからのみOK!) ギャラリーぶっこぬきサイトが作られ …

nginx_20160530_1
Nginxのキャッシュ管理 cache purgeモジュール WordPress

  Nginxのキャッシュをブラウザから管理できるcache purgeモジュールの導入方法です。   ダウンロードディレクトリの作成 [c …

IE表示確認
IE標準 搭載の開発者ツールで表示仕方をチェック

WEBサイトを作ってると誰もが言う悩ましい問題。 それはブラウザ毎の表示の違い。 特にIE こと、インターネットエクスプローラーはCSS3に対応まだまだだったり …

plesk11
Plesk11の基本設定からメールクライアント設定まで

サーバー操作といえば普通はコマンドラインによるコンソールですが、PleskやらWebminを使ってWindows Serverのように 『GUIでサーバーを管理 …

キャッチオール postfix
Postfix 1つのドメインで全て受信 キャッチオール設定

1つのメールに集約させて受信する設定です。 既定のメインのサーバドメインとしてhogehoge.netが設定されています。 catchalluser@mogem …

テキストフォーム 未入力 表示
テキストフォームに未入力時は表示させ、書き込まれたら消す。 jQuery

テキストフォームの未入力時の表示 フォームを選択すると文字が消えます。 ユーザーの使いやすさの向上に使われる事があります。   派手な効果はないものの …

aws_logo
AWSの節約術 EC2とRDSの停止方法

レンタルサーバの場合は通常は月額課金制なので、動かさなければ損というばかりに起動させがちですが、AWSのようなクラウドは使用した単位時間あたりによって課金される …

トップページ