質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

4回答

8798閲覧

load averageが高い(3.00~4.75)がCPUの使用率は10%前後なのはどうして?

jun_1989

総合スコア17

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

3グッド

3クリップ

投稿2017/09/12 14:06

編集2017/09/13 02:44

お世話になります。サーバー関連は初心者です。

〜〜〜状況説明〜〜〜

現在、awsのec2にてサイトを運営しております。使用しているインスタンスはt2.medium(メモリ4G、CPU数2)でDB(mysql)も一緒のインスタンスに入っています。

サイトのアクセス数は平均すると1日1万、月で30万アクセスくらいです。

この度、サイトへのアクセスが重くなったのでいろいろと調べてみました。

uptimeコマンドでload averageを見ると、3.00 ~ 4.75くらいの値が出ます。インスタンスのCPUの数は2つですので、2.00を超えていると高いのかなという印象です。

freeコマンドで空メモリをチェックすると2.7Gありました。(4Gのうち使用中は1.3G)

続いてawsの管理画面でインスタンスのCPU使用率を見ると10%前後となっております。

〜〜〜状況説明終わり〜〜〜

お聞きしたいことは2点です。

●「load averageが高い = CPU、メモリに余裕がない」という認識は間違っているのでしょうか。またload averageの値が下がればサイトへのアクセス速度の改善も期待されるのでしょうか。

●load averageの値を下げるにはどのような方法がありますでしょうか。例えばインスタンスをt2.xlarge(メモリ16G、CPU数4)にスケールアップした場合、load averageの値の低下が期待できるのでしょうか。

ec2をスケールアウトして複数台構成にし、DBも別サーバーかRDSにするのが良い選択であるかもしれませんが、もしスケールアップしてメモリとCPUを強化することでも改善が期待できるのであれば、そちらで対応したいと考えております。

以上、お手数ですがどなたかご教授いただければ幸いです。
宜しくお願いします。

追記:
apacheとmysqlの設定等を下記に示します。

---apache(2.2.31)---
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

Timeout 60
KeepAlive off

---mysql(5.6.36)---
max_allowed_packet=16MB
max_connections 151

---mysql> SHOW STATUS LIKE '%connect%';---
| Aborted_connects | 1 |
| Connection_errors_accept | 0 |
| Connection_errors_internal | 0 |
| Connection_errors_max_connections | 0 |
| Connection_errors_peer_address | 0 |
| Connection_errors_select | 0 |
| Connection_errors_tcpwrap | 0 |
| Connections | 1034127 |
| Max_used_connections | 37 |
| Performance_schema_session_connect_attrs_lost | 0 |
| Ssl_client_connects | 0 |
| Ssl_connect_renegotiates | 0 |
| Ssl_finished_connects | 0 |
| Threads_connected | 4 |

以上です。

追記2:
sarの結果も示します。%iowaitは高いですが、%systemは低い値でした。

11時37分30秒 CPU %user %nice %system %iowait %steal %idle
11時37分31秒 all 0.50 0.00 0.50 48.76 0.50 49.75
11時37分32秒 all 0.00 0.00 1.51 98.49 0.00 0.00
11時37分33秒 all 0.00 0.00 1.00 80.00 0.00 19.00
11時37分34秒 all 0.00 0.00 0.51 49.24 0.00 50.25
11時37分35秒 all 0.00 0.00 1.01 76.88 0.00 22.11
11時37分36秒 all 0.00 0.00 0.50 99.50 0.00 0.00
11時37分37秒 all 0.00 0.00 0.00 99.50 0.50 0.00
11時37分38秒 all 0.00 0.00 0.00 100.00 0.00 0.00
11時37分39秒 all 0.50 0.00 0.50 99.00 0.00 0.00
11時37分40秒 all 0.00 0.00 0.50 99.50 0.00 0.00
平均値: all 0.10 0.00 0.60 85.08 0.10 14.11

sar 1 10 -Wを実行した結果も表示します。

11時38分50秒 pswpin/s pswpout/s
11時38分51秒 0.00 0.00
11時38分52秒 0.00 0.00
11時38分53秒 0.00 0.00
11時38分54秒 0.00 0.00
11時38分55秒 0.00 0.00
11時38分56秒 0.00 0.00
11時38分57秒 0.00 0.00
11時38分58秒 0.00 0.00
11時38分59秒 0.00 0.00
11時39分00秒 0.00 0.00
平均値: 0.00 0.00

ikuwow, shimitei, manzyun👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takotakot

2017/09/18 23:21

ディスクの最大サイズを教えて下さい。
guest

回答4

0

ベストアンサー

otn さんの回答のとおり、ディスクI/O 待ちの可能性があります。
空きメモリがあるので、メモリ不足による swap in/out によるものではなさそう。
とすると、DB の書き込みなど、リクエストに対する通常の処理によるものかもしれません。

vmstatwa (iowait) の数値[%]が大きくないか、もし、大きければ、ps aux で STAT が D になっているプロセスを確認するといいと思います。

例えばインスタンスをt2.xlarge(メモリ16G、CPU数4)にスケールアップした場合、load averageの値の低下が期待できるのでしょうか。

もし、原因がディスクI/O 待ちだった場合、上位のインスタンスにすることで、メモリや CPU よりもネットワーク帯域が増えることにより、EBS の読み書き性能が向上することが期待できます。

より、ディスク性能が必要であれば、EBS タイプを io1 に変更するとか、Amazon EBS 最適化インスタンス の対象となるインスタンスタイプへの変更も検討ください。

投稿2017/09/12 16:34

TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jun_1989

2017/09/13 01:56

ご回答ありがとうございます。ご指摘の通り、vmstatで確認したところwaの値が常時90以上を示している状態でした。bi、boともに高いのでmysqlの同時接続数などのチューニングが不適切なのかなというのが私の推測です。そのあたりを見直してみます。またps auxでSTATがDになっているものはありませんでした。(Rが2つでその他はSまたはSsなどでした)
TaichiYanagiya

2017/09/13 16:09

EC2 インスタンスの CloudWatch メトリクスで、NetworkIn, NetworkOut が上限に張り付いているということはありませんでしょうか? t2 タイプだと、サービスネットワークと EBS 用の通信ネットワークが同じなので、EBS の読み書きでネットワーク帯域が飽和して HTTPリクエスト/レスポンスに遅延が生じているとか。
guest

0

CPU使用率が低いのにロードアベレージが高いのは、ディスクIO待ちが多いと言うことが考えられます。
CPUやメモリが不足している場合は、CPU使用率が上がるはずです。
sar や vmstat も見てみましょう。

投稿2017/09/12 14:35

otn

総合スコア85762

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jun_1989

2017/09/13 01:48

ご回答ありがとうございます。vmstatの値を確認しましたら、ご指摘の通りbi、boの値が高かったです。そのあたりを改善してみます。
guest

0

みなさまご回答いただきありがとうございました。

ご指摘いただいたディスクI/Oの値を低くするようにプログラムを修正したら無事にload averageの値も下がりました。

DBに対して負荷のかかる処理をプログラムで書いていたのが原因だと思われます。

あらためてご回答いただき感謝申し上げます。

投稿2017/09/19 05:19

jun_1989

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

インスタンスのCPUの数は2つ・・・これは、コア数でしょうか?

・・・インスタンスという意味が分からないので・・・^^;
もし、2コアなら200%、4コアであればほぼ100%、8コアであれば50%ぐらいのの使用率になります。
サーバのOSが分からないので、ちなみにfreebsdだと
root@usr:~ # sysctl -a|grep CPU
dev.cpu.3.%desc: ACPI CPU
dev.cpu.2.%desc: ACPI CPU
dev.cpu.1.%desc: ACPI CPU
dev.cpu.0.%desc: ACPI CPU
root@usr:~ #
で、コア数がわかりますが・・・
LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる

投稿2017/09/12 14:44

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jun_1989

2017/09/13 01:51

ご回答ありがとうございます。説明不足で申し訳ございません。osはamazon linux で物理CPUが1、コアが2です。リンク先も参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問