2011-10-27 35 views
5

Tôi đang chuyển từ một công ty lưu trữ web dùng chung sang VPS. Và tôi đang cố gắng tìm cấu hình tối ưu cho hệ thống của mình.MySQL KHÔNG sử dụng bộ nhớ khả dụng

Đối với 1 bảng cụ thể có nửa triệu bản ghi, 1 truy vấn mất vài giây trên máy chủ trước đó hiện đang mất vài phút.

Tôi đang cố gắng cải thiện thời gian phản hồi của máy chủ, vì vậy tôi đã mua thêm bộ nhớ (tôi có 2GB RAM và tôi vẫn có thể mua thêm tài nguyên nếu cần và 2 lõi). Tôi cũng đã "lừa" bằng cách sao chép my.cnf của công ty cũ để VPS của tôi:

[mysqld] 
read_buffer_size=8M 
read_rnd_buffer_size=8M 
sort_buffer_size=32M 
innodb_additional_mem_pool_size=503M 
innodb_flush_log_at_trx_commit=1 
innodb_log_buffer_size=16M 
innodb_buffer_pool_size=1007M 
innodb_log_file_size=256M 
innodb_thread_concurrency=8 
innodb_autoextend_increment=128 
max_connections=8059 
max_user_connections=50 
thread_cache_size=128 
thread_stack=196608 
binlog_cache_size=2M 
net_read_timeout=30 
net_retry_count=10 
net_write_timeout=30 
thread_concurrency=10 
open_files_limit=9940 
max_heap_table_size=32M 
tmp_table_size=64M 
key_buffer_size=512M 
key_buffer=128M 
myisam_sort_buffer_size=64M 
join_buffer=16M 
record_buffer=8M 
wait_timeout=300 
connect_timeout=10 
max_allowed_packet=16M 
max_connect_errors=100 
table_cache=1024 
query_cache_size=32M 
query_cache_type=1 
ft_min_word_len=4 
datadir=/var/lib/mysql 
tmpdir=/tmp 
socket=/var/lib/mysql/mysql.sock 
old-passwords=0 
[mysqldump] 
quick 
max_allowed_packet=16M 
[myisamchk] 
key_buffer=64M 
sort_buffer=64M 
read_buffer=16M 
write_buffer=16M 

Vấn đề là các truy vấn vẫn còn chậm, và máy chủ không không sử dụng bộ nhớ còn trống!

   total  used  free  shared buffers  cached 
Mem:   2002  1986   15   0   6  1079 
-/+ buffers/cache:  901  1101 
Swap:   1747   2  1745 

Mọi đề xuất?

Trân

Trả lời

4

Bạn có thể có một cái nhìn tại sử dụng https://github.com/rackerhacker/MySQLTuner-perl

Mà bạn có thể sử dụng để phân tích MySQL và nó sẽ đưa ra các thiết lập được đề nghị.

Cài đặt của bạn có vẻ cao đối với bộ nhớ 2GB. IE max_connections = 8059 Điều đó tự nó đòi hỏi nhiều bộ nhớ hơn bạn có.

[mysqld] 
max_connections=100 
innodb_buffer_pool_size=256M 
query_cache_size=256M 
key_buffer_size=256M 
innodb_flush_log_at_trx_commit=0 
innodb_flush_method=O_DIRECT 
query_cache_type=1 
query_cache_limit=2M 
table_cache=1024 
join_buffer_size=4M 
thread_cache_size=128 
tmp_table_size=256M 
max_heap_table_size=256MB 

Đối với RAM 2GB bạn có thể thử sử dụng các thiết lập trong MySQL Đây là những thiết lập cần thiết cho một trong những máy chủ 2gb Tôi hiện đang sử dụng

+0

Hi oOo - STAR - oOo Vấn đề của tôi là * không * rằng các thiết lập đòi hỏi nhiều bộ nhớ hơn tôi có, nhưng ngược lại: Bộ nhớ có sẵn không được sử dụng ngay cả khi các cài đặt rất cao. – mossaab

+0

Điều này có thể để làm với sức mạnh xử lý phải mất bao lâu để có được thông tin .. Bạn có monitered CPU bằng cách sử dụng hàng đầu trong ssh? –

+0

Tôi có khoảng 110% sử dụng CPU (với 2 lõi). Truy vấn này không ảnh hưởng đến CPU. Vì vậy, tôi không nghĩ đây là nguyên nhân. – mossaab

Các vấn đề liên quan