web-dev-qa-db-ja.com

非常に高いCPUと低いRAM使用率-CPU使用率の一部をRAM(CloudLinux LVE Managerがインストールされている場合)にスワップすることは可能ですか?

CloudLinuxをインストールして、CPUの使用量、さらに重要なことにWebサイトが使用する同時接続をある程度制御できるようにする必要がありました。しかし、ご覧のとおり、サーバーの負荷は非常に高いため、一部のサイトでは最大10秒かかります。ロードする!

  • サーバー負荷22.46(8 CPU)(!)
  • 使用メモリ36.32%(8,146,632のうち2,959,188)(ok)
  • スワップ使用量0.01%(2,104,504件中132件)(ok)

サーバ:

  • 8 x Intel(R)Xeon(R)CPU E31230 @ 3.20GHz
  • メモリ:8143680k/9437184kが利用可能(2621kカーネルコード、234872k予約済み、1403kデータ、244k初期化)
  • Linux

昨日:合計214,514ページビュー(Awstat)

今私の質問:CPU使用率の一部をRAMにシフトできますか?

または、サイトの実行速度を上げるために他に何ができるでしょうか(Webサイトは動的であるためSQLが重い)

ありがとう

top - 06:10:14 up 29 days, 20:37,  1 user,  load average: 11.16, 13.19, 12.81
Tasks: 526 total,   1 running, 524 sleeping,   0 stopped,   1 zombie
Cpu(s): 42.9%us, 21.4%sy,  0.0%ni, 33.7%id,  1.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8146632k total,  7427632k used,   719000k free,   131020k buffers
Swap:  2104504k total,      132k used,  2104372k free,  4506644k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND         
 318421 mysql     15   0 1315m 754m 4964 S 474.9  9.5  95300:17 mysqld          
   6928 root      10  -5     0    0    0 S  2.0  0.0  90:42.85 kondemand/3      
 476047 headus    17   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
 476055 headus    18   0  172m  18m 9.9m S  1.7  0.2   0:00.05 php              
 476056 headus    15   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
 476061 headus    18   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
   6930 root      10  -5     0    0    0 S  1.3  0.0 161:48.12 kondemand/5      
   6931 root      10  -5     0    0    0 S  1.3  0.0 193:11.74 kondemand/6      
 476049 headus    17   0  172m  19m  10m S  1.3  0.2   0:00.04 php              
 476050 headus    15   0  172m  18m 9.9m S  1.3  0.2   0:00.04 php              
 476057 headus    17   0  172m  18m 9.9m S  1.3  0.2   0:00.04 php              
   6926 root      10  -5     0    0    0 S  1.0  0.0  90:13.88 kondemand/1      
   6932 root      10  -5     0    0    0 S  1.0  0.0 247:47.50 kondemand/7      
 476064 worldof   18   0  172m  19m  10m S  1.0  0.2   0:00.03 php              
   6927 root      10  -5     0    0    0 S  0.7  0.0  93:52.80 kondemand/2      
   6929 root      10  -5     0    0    0 S  0.3  0.0 161:54.38 kondemand/4      
   8459 root      15   0  103m 5576 1268 S  0.3  0.1  54:45.39 lvest
2
Chriswede

問題は明らかにあなたが実行しているウェブアプリです。 topの出力から、いくつかのPHPコードを実行しているようです。PHPコードの原因となる部分を特定する必要があります。問題(直接またはデータベースアクセス経由)。

例のtop出力が通常の状況を説明している場合、プロセスはアプリケーションレベルで相互にブロックします(ある種のロック競合)の一部があると思います。

これは、次の事実から推測されます。low IO wait time(wa output in top data)、3%システムアイドルおよび高負荷。これは、すべてのCPUを実行しておらず、IOを待機していないを意味します。この場合、システムを「遅すぎる」ようにする唯一の方法は、プロセスをシリアル化することです(CPU#1で別のプロセスが完了するまで1つのプロセスがCPU#2で待機します)。これは、異なるプロセス間に多かれ少なかれ明示的なロックがある場合にのみ発生します。プロセス間のロックを本当に取り除くことはできないので、唯一の選択肢は、複数の遅いコアではなく、速いCPUコアに投資することです。CPUはすでに最上位に近いので、最初にコードを調査することを検討します。 。

いくつかのRAMを使用してCPU使用率を削減することが可能かどうかを尋ねました。積極的なキャッシュで可能かもしれませんが、実行しているアプリケーションコード(PHP)のみがこのトレードオフを利用できます。繰り返しになりますが、PHPコードをプロファイリングして変更する必要があります。メモリを増やし、CPUを減らしてくださいという魔法のスイッチはありません。

2

何がこれほど大きな負荷を生み出すのかを知る必要があります。サーバーがCPUを集中的に使用するいくつかのタスクによってロードされているか、IO輻輳が発生している可能性があります。

重いデータベースの場合IOデータベースキャッシュを増やすことを試みることができます-mysqlのinnodb_buffer_poolまたはpostgresのshared_buffers。

EDIT:topの出力は、問題が最適化されていないmysqlクエリにあることを示しています。データベースを管理できる場合-遅いリクエストを見つけて適切なインデックスを作成するか、SQLクエリを書き直してmysqlcpuのボトルネックを取り除きます。これが不可能な場合は、より強力なCPUを購入してください。

0
DukeLion

「CPU使用率をRAMにシフトする」とはどういう意味かわかりませんが、どういう意味であっても、おそらく機能しません。

アプリケーションの速度を低下させる実際のボトルネックを見つける必要があります。これには以下が含まれる場合があります

  • I/O帯域幅が低すぎます。システムはハードディスクを待機しています
  • データベースのパフォーマンス
  • Webアプリ用の非即興および/または計算集約型ソフトウェア。
  • Webアプリとはまったく関係のない何か。
0
Sven