2011-01-01 5 views
1

私自身は解決できないような問題に遭遇しています。私はmysql 5.1.37とレールアプリケーションを実行しているamazon EC2サーバー(大きなインスタンス)を持っています。サーバーは、最近のデータベース・プロセスがハングし、高いCPU使用率の問題を持ってきた、と私はmysqlのコンソールに行き、私が見るショーフルPROCESSLISTを行うときには、このようなクエリでデータを送信するとハングアップ:Mysqlのクエリは本番データベースサーバーでハングアップしますが、ローカルで正常に動作します

| 315 | root | 10.249.61.118:47812 | roomorama | Query | 193 | Sending data | SELECT COUNT(*) FROM (SELECT `rooms`.*, IFNULL(MIN(av.host_daily_price), rooms.host_daily_price) AS 'price' FROM `rooms` LEFT JOIN availabilities AS av ON (av.room_id = rooms.id AND av.date BETWEEN '2011-01-01' AND '2011-07-01' AND av.inquiry_id IS NULL AND (av.status IS NULL OR av.status = 0)) WHERE (rooms.deleted_at IS NULL) AND (`rooms`.`city_id` = 1 AND `rooms`.`hidden` = 0) AND (`rooms`.`created_at` <= '2011-01-01 16:54:43') GROUP BY rooms.id) as search_results | 

これはまったく戻ってこないか、または完了するのにばかげて長い時間がかかるようです。 私の開発マシン(同じmysqlバージョン)でこのクエリを実行すると、結果はすぐに問題なく返されます。 どこから探し始めたらいいですか、これはMySQLのバグですか?非常にひどく設定されたmysqlサーバ? テーブルはInnoDBテーブルであり、ここでは、サーバー

[client] 
port   = 3306 
socket   = /var/run/mysqld/mysqld.sock 

[mysqld_safe] 
socket   = /var/run/mysqld/mysqld.sock 
nice   = 0 

[mysqld] 
user   = mysql 
pid-file  = /var/run/mysqld/mysqld.pid 
socket   = /var/run/mysqld/mysqld.sock 
port   = 3306 
basedir   = /usr 
datadir   = /var/lib/mysql 
tmpdir   = /tmp 

character-set-server   = utf8 
default-character-set   = utf8 

default-storage-engine=innodb 
skip-external-locking 
skip-name-resolve 
skip-federated 

bind-address   = 0.0.0.0 

# 
# * Fine Tuning 
# 

# This replaces the startup script and checks MyISAM tables if needed 
# the first time they are touched 
myisam-recover   = BACKUP 

#thread_concurrency  = 10 
max_allowed_packet  = 32M 
thread_stack   = 192K 
thread_cache_size  = 8 
key_buffer    = 250M 
max_connections   = 1024 
wait_timeout   = 180 
net_read_timeout  = 30 
net_write_timeout  = 30 
back_log    = 128 
table_cache    = 1024 
max_heap_table_size  = 512M                                    

# 
# * InnoDB Tuning 
# 

innodb_buffer_pool_size   = 5000M 
innodb_additional_mem_pool_size = 20M 
innodb_flush_log_at_trx_commit = 2 
innodb_lock_wait_timeout  = 50 
#innodb_log_file_size=250M 
#innodb_log_buffer_size=8M 


# 
# * Query Cache Configuration 
# 

# Query Cache 
query_cache_limit  = 4M 
query_cache_size  = 256M 
query_cache_type  = 1 


# 
# * Slow Query Logging 
# 
log_slow_queries  = /var/log/mysql/mysql-slow.log 
long_query_time = 1 
log-queries-not-using-indexes 

# The following can be used as easy to replay backup logs or for replication. 
# note: if you are setting up a replication slave, see README.Debian about 
#  other settings you may need to change. 
#server-id    = 1 
#log_bin      = /var/log/mysql/mysql-bin.log 
expire_logs_days  = 10 
max_binlog_size   = 100M 
#binlog_do_db   = include_database_name 
#binlog_ignore_db  = include_database_name 



[mysqldump] 
quick 
quote-names 

max_allowed_packet  = 32M 
default-character-set = utf8 

[mysql] 
default-character-set = utf8 

[isamchk] 
key_buffer    = 16M 
+0

両方のサーバーの説明を表示してください。 #説明を選択blah blah blah – shantanuo

答えて

1

上の私の完全なMySQLの設定ファイルである、それはあなたのdevのサーバーがデータその上にの異なるセットを持っていることは可能ですか?クエリが完了するまでの時間は、データベース内の行の数と内容に依存します。

+0

いいえ、ローカルのdevデータベースには、プロダクションサーバの最近のデータダンプがあります –

0

テーブルのインデックスを調べる必要があります。私はちょうど同じ問題を抱えていて、ローカルテーブルにインデックスがないことがわかりました。

関連する問題