CloudLinuxをインストールして、CPUの使用量、さらに重要なことにWebサイトが使用する同時接続をある程度制御できるようにする必要がありました。しかし、ご覧のとおり、サーバーの負荷は非常に高いため、一部のサイトでは最大10秒かかります。ロードする!
サーバ:
昨日:合計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
問題は明らかにあなたが実行しているウェブアプリです。 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を減らしてくださいという魔法のスイッチはありません。
何がこれほど大きな負荷を生み出すのかを知る必要があります。サーバーがCPUを集中的に使用するいくつかのタスクによってロードされているか、IO輻輳が発生している可能性があります。
重いデータベースの場合IOデータベースキャッシュを増やすことを試みることができます-mysqlのinnodb_buffer_poolまたはpostgresのshared_buffers。
EDIT:top
の出力は、問題が最適化されていないmysqlクエリにあることを示しています。データベースを管理できる場合-遅いリクエストを見つけて適切なインデックスを作成するか、SQLクエリを書き直してmysqlcpuのボトルネックを取り除きます。これが不可能な場合は、より強力なCPUを購入してください。
「CPU使用率をRAMにシフトする」とはどういう意味かわかりませんが、どういう意味であっても、おそらく機能しません。
アプリケーションの速度を低下させる実際のボトルネックを見つける必要があります。これには以下が含まれる場合があります