2016-09-20 13 views
1

私はPHPで古風な方法で構築された本当に大きなウェブサイトを持っています& MYSQL。Mysqlの "メモリ使用量"が増えています

私は自分のウェブサイト、異なるPHPページで1,000以上の異なるクエリを持っていますが、それらをすべてMYSQLIに更新するのは本当に難しいです。

私は4GBのRAMを搭載したVPSサーバーを購入しましたが、過去数ヶ月間、私は実際にはページの読み込みが遅くなりました。

サーバを再起動すると、すべてがスムーズに実行されますが、数時間/日後にウェブサイトの負荷が低下し、ページの読み込み時間が3秒以上になります。 mysqldサービスのメモリ使用量が増加しており、サーバの再起動時に80MBから約400MB以上に達しています。

私はindex.php mysql_close()の最後に入れましたが、接続数はまだ増えているようです。

質問 mysqlメモリ使用量を無制限に増やす原因は何ですか? MYSQLIへのすべてのクエリを更新すると、パフォーマンスが向上する可能性がありますか?

いくつかの情報:

innodb_version 
5.5.31 
protocol_version 
10 
slave_type_conversions 
version 
5.5.31-log 
version_comment 
MySQL Community Server (GPL) 
version_compile_machine 
x86_64 
version_compile_os 
Linux 

ストレージエンジン:混合(サムステーブルがINNODBあり、いくつかのテーブルがMyISAMのある のmy.cnf:ランニング〜6-7の問合せについて私が持っている

[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
user=mysql 
max-connections=100000 
# Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=0 
thread_cache_size=5 
table_open_cache=99390 
sort_buffer_size=512M 
read_rnd_buffer_size=512M 
query_cache_size=512M 
query_cache_limit = 16M 
query_cache_type = 1 
slow_query_log=1 
slow_query_log_file=slow_query_log.log # 
long_query_time=5 
log-queries-not-using-indexes=1 


[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 

私が使用するときshow processlist

+0

最初にサイトが遅くなったら、mysqlコンソールでルートからshow processlistクエリを実行して何が起こっているのかを確認してください –

+0

質問:どのバージョンのMySQL?どのストレージエンジンを使用していますか? my.cnfのバッファ設定とは何ですか?あなたのコードでは何種類ですか?申し訳ありません - あなたの声明に基づいてこの質問に答えることはできません。そしてMySQLIはパフォーマンスの面で大きな違いはありません。 –

+0

これらのすべての情報@TGrayで質問を更新しました。私はどれくらいの並べ替えをしているのか分かりませんが、あまり推測できません。私の主な問題は、クエリが特定のuser_idのものであるにもかかわらず、SELECTとORDER BYを使用するとほぼ300k行のテーブルからです。 – TheUnreal

答えて

0

max-connections=100000 - Yikes!Drop to 1000

table_open_cache=99390 - と言う、に低下、2000

sort_buffer_size=512M - RAMの1%に低下、たとえば、40M

read_rnd_buffer_size=512M - 同上

query_cache_size=512M - 大きすぎます。物事を遅らせる。多くをキャッチするのに十分ではないほど低くはない;

long_query_time=5多くの情報を提供することなくslowlogをクラッターする2

log-queries-not-using-indexes=1 - 0に変更してください

あなたはどのエンジンを使用しているかは言いませんでした。 MyISAMとInnoDBのアドバイスについてはthisを読んでください。

1000ページ - それほど多くはありません。

どのWebサーバーですか? Apacheの場合は、MaxClientsを20以上に設定しないでください。

+0

私の記事で私のテーブルはMyIsamとInnoDBが混在していると言いました。私はこのスタッフを読んできましたが、それについての決定は本当に難しいです。あなたの設定を試しに行く、ありがとう。 – TheUnreal

+0

Mysqldはどんどん大きくなってきています。開かれている接続がすべて閉じているような気がしています。 – TheUnreal

+0

mysqldのメモリ使用量はいくらか制限を超えるまで増加しますが、わずかに変動します。私の提案は、その限界を危険なほど大きくすることを防ぐことを目指しています。 MySQLのスワッピングは_terrible_です。 –

関連する問題