2013-11-08 4 views
1

У меня есть база данных (только 30 МБ) и эта база данных с использованием 4gb ram! Макс 10 человек онлайн на моем сайте. Я думаю, что это плохо cnf.my.Mysql using ограничение памяти

mysql> show variables like '%size%'; 


+---------------------------------+----------------------+ 
| Variable_name     | Value    | 
+---------------------------------+----------------------+ 
| binlog_cache_size    | 32768    | 
| bulk_insert_buffer_size   | 8388608    | 
| delayed_queue_size    | 1000     | 
| innodb_additional_mem_pool_size | 1048576    | 
| innodb_buffer_pool_size   | 8388608    | 
| innodb_log_buffer_size   | 1048576    | 
| innodb_log_file_size   | 5242880    | 
| join_buffer_size    | 4194304    | 
| key_buffer_size     | 268435456   | 
| key_cache_block_size   | 1024     | 
| large_page_size     | 0     | 
| max_binlog_cache_size   | 18446744073709547520 | 
| max_binlog_size     | 1073741824   | 
| max_heap_table_size    | 268435456   | 
| max_join_size     | 18446744073709551615 | 
| max_long_data_size    | 1048576    | 
| max_relay_log_size    | 0     | 
| myisam_data_pointer_size  | 6     | 
| myisam_max_sort_file_size  | 9223372036853727232 | 
| myisam_mmap_size    | 18446744073709551615 | 
| myisam_sort_buffer_size   | 8388608    | 
| preload_buffer_size    | 32768    | 
| profiling_history_size   | 15     | 
| query_alloc_block_size   | 8192     | 
| query_cache_size    | 268435456   | 
| query_prealloc_size    | 8192     | 
| range_alloc_block_size   | 4096     | 
| read_buffer_size    | 131072    | 
| read_rnd_buffer_size   | 262144    | 
| sort_buffer_size    | 20971520    | 
| sql_max_join_size    | 18446744073709551615 | 
| thread_cache_size    | 4     | 
| tmp_table_size     | 41943040    | 
| transaction_alloc_block_size | 8192     | 
| transaction_prealloc_size  | 4096     | 
+---------------------------------+----------------------+ 
35 rows in set (0.00 sec)

И my.cnf:

[mysqld] 

    local-infile=0 
    datadir=/var/lib/mysql 
    socket=/var/lib/mysql/mysql.sock 
    long_query_time=1 
    log-slow-queries=/var/log/mysql/log-slow-queries.log 
    interactive_timeout=180 
    wait_timeout=180 
    max_connections=100 
    innodb_buffer_pool_size=256M 
    query_cache_size=256M 
    key_buffer_size=256M 
    sort_buffer_size=20M 
    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=4 
    tmp_table_size=40M 
    max_heap_table_size=256MB 

    user=mysql 
    symbolic-links=0 
    #bind-address=127.0.0.1 

    [mysqld_safe] 

    log-error=/var/log/mysqld.log 
    pid-file=/var/run/mysqld/mysqld.pid 

В моих VPS у меня есть 5,7 Гб оперативной памяти

как уменьшить потребление памяти?

+1

где вопрос? –

+0

вопрос об обновлении. Благодаря :) – user2721564

ответ

0

Я подозреваю, что sort_buffer_size и join_buffer_size являются большими вкладами в чрезмерное использование памяти здесь. Начните с комментариев в настройках, чтобы использовать значения по умолчанию.

Эти значения могут влиять на использование памяти, связанную с рабочей нагрузкой.

Зная очень мало о вашей системе, по-прежнему кажется, что ваши key_buffer_size и innodb_buffer_pool_size могут быть в два раза больше, чем необходимо (и одно или другое может быть совершенно ненужным, в зависимости от того, какой механизм хранения вы используете), и ваш query_cache_size вероятно, от 2 до 16 раз больше, чем необходимо. В отличие от упомянутых выше настроек, которые могут изменять значение памяти по рабочей нагрузке, эти настройки уменьшают базовый объем памяти, используемой сервером, независимо от рабочей нагрузки.

В следующий раз, когда объем использования вашей системы будет выше, чем вы ожидаете, также может быть интересно SET GLOBAL THREAD_CACHE_SIZE = 0;, а затем посмотреть, изменяется ли распределение памяти сервера при отсоединении и повторном подключении клиентов.

0

my.cnf просит

innodb_buffer_pool_size=256M 

но список указанных размеров у вас есть только 8M для PIL,. Необходимо выяснить, почему у вас нет 256M, проверьте журналы.

и

max_heap_table_size=256MB needs to be 
max_heap_table_size=40M # from 256MB to correct MB and match tmp_table_size 
Смежные вопросы