1

私のクライアントは、1.5 GB の RAM を備えた Amazon EC2 でホストされているかなり大きな Joomla ベースのウェブサイトを所有しています。サーバーは Apache と MySQL の両方をホストします。現在、データベースのサイズは約 250MB で、ウェブサイトには毎日約 5000 のトラフィックがあります。MySQL が CPU メモリの約 99% を使用してクラッシュすることがあるため、ウェブサイトで深刻なメモリ リークが発生しているようです。データベース テーブルの最適化、 の変更を試み.cnfましたが、改善は見られません。

100MB を超える db サイズを占める Joomla スマート検索で使用されるファインダー テーブルがあります。スマート検索を無効にしましたが、それでも問題が発生します。

友達、これを修正するためにいくつかの提案を投げてください。

ありがとう。

以下は my.cnf ファイルです

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0
bind-address            = 127.0.0.1

default-storage-engine=innodb
transaction-isolation    =   REPEATABLE-READ
character-set-server    =   UTF8
collation-server      =   UTF8_general_ci

max_connections         = 5000
wait_timeout            = 30
connect_timeout         = 60
#interactive_timeout     = 600
#max_connect_errors      = 1000000
#max_allowed_packet      = 10M


skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

slow_query_log
long_query_time = 2

[mysqld_safe]
log-error=/var/log/mysqld.log
myisam_sort_buffer_size = 64M
4

1 に答える 1

0

私の賭けは、あなたが不正なロボット(そこにある多くのSEOスパイダーの1つ、またはボットのネットワークをプログラムしてタスクを実行できるようにする80legsのようなツール)に見舞われていることです。激しい爆撃。

どのMySQL設定が一度メモリを使用し、接続ごとにどれがメモリを使用するかを思い出せませんが、最大5000の同時接続を許可するように設定されており、一部のバッファは2MBと8MBであるため、重い負荷は、利用可能なRAMの合計を簡単に超える可能性があります。

現在の設定では、毎日のすべてのトラフィックを同時にヒットさせることができます。私はそれを100以下の設定にノックダウンし、それがより安定性を与えるかどうかを確認します。

割り当てられているメモリが多すぎる場所を見つけるのに役立つさまざまなMySQLチューナースクリプトがあります。

クラッシュ/高負荷の頃のアクセスログがある場合は、悪意のあるボットをチェックしますが、監視/制御しているいくつかのサイトでそれらを支配するために絶え間ない戦いがありました。

使用可能なCPUの数に応じて、thread_concurrencyの値を確認することもできます。

于 2013-02-05T23:48:21.783 に答える