サーバーが遅い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

  関連記事

Dos攻撃
サイバー攻撃に対して何が出来るのか DDoS flood

サイバー攻撃マップ 目次1 DOS攻撃ってなんだろう2 SYN Flood対策及び各サービスへの対応3 smurf攻撃対策4 プルートフォースアタック対策5 バ …

Citrix XenAPP リモートからの切断が残ってしまう場合の解決

  システム管理者であるなら、サインアウトなど”お作法”に従ってログアウトしますが、一般のユーザは当然そんな事は気にしません。 …

MySQLのレプリケーション切断時に再接続する値 slave-net-timeout master-connect-retry

  MySQLの大きな機能であるレプリケーションを利用する場合にデフォルト設定での運用は難しい気がします。というのもサーバは絶え間なく動いているようで …

ネットワーク障害分析
簡易的にトラフィックをキャプチャするツールを色々ご紹介 Linux

サーバーの トラフィックが見たいけど MRTGとかで監視するほどじゃないなぁという時に 便利なツールを紹介します。 目次1 iftop2 nethogs3 tc …

Plesk12 [warn] mod_fcgid: read data timeout in 45 seconds 大量画像同時投稿でのアップロードエラー

目次1 大量画像同時登校時のエラー2 ログの確認3 お疲れ様です 大量画像同時登校時のエラー お客さんから障害時の詳細な時間を教えて貰えたので該当日時付近のログ …

Linux glibcの脆弱性『GHOST』についてのまとめ

目次1 攻撃方法2 1. 悪意あるユーザーが『glibc』を使っているアプリケーションに細工したリクエストを送信する 2. バッファーオーバーフローによりアプリ …

unknown charaset mysql
MySQL ERROR 1115 (42000) : Unknown character set: の対処 

目次1 Unknown character setの対処方法2 sedコマンドを使おう3 具体的には Unknown character setの対処方法 本番 …

XenAPP 7 セッション最大数 変更 ポリシー
XenAPP7.9 最大セッション数のポリシー制御

  運用しているとお客様からこうして欲しいという要望を受けます。その時はWindows ServerのグループポリシーとXenAPPのポリシーを組み合 …

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

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

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

AWS ELB ALB Aplication Load Balancing
AWS ELB(ALB)ロードバランサーを使ってURLの振り分け

  新しいELBであるAWS ALB(Aplication Load Balancing)を使う利点として、URLの振り分けが簡単に出来るようになりま …

トップページ