Como eu permito que o mysqld use mais de 24.9% da minha cpu?

6

Eu tenho um servidor da Web em execução no RHEL que está executando o Apache e o MySQL. Ele tem um CPU Quad core de 3.2Ghz Xeon e 8 Gigs de RAM. Na maioria das vezes, não temos nenhum problema.

Nossa aplicação web é muito intensiva em banco de dados. Quando o nosso uso fica muito pesado, o MySQL vai se preocupar em usar 24,9% da CPU. Na maioria das vezes, fica abaixo de 5%. Eu especulei que ele está usando apenas um núcleo da CPU e está localizando esse núcleo, mas o TOP me mostra na coluna cpu que o mysqld muda os núcleos mesmo quando o uso permanece em 24.9%. Quando isso acontece, o MySQL fica dolorosamente lento, já que está enfileirando consultas Existe alguma configuração mágica que irá dizer ao mysql para usar mais cpu quando for necessário? Além disso, qualquer outro conselho sobre minha configuração seria útil.

Nós executamos dois aplicativos neste servidor. Um que roda Innodb, mas não recebe muito uso (foi substituído pelo outro aplicativo), e um que executa MyIsam e recebe muito uso. No geral, todo o nosso diretório de dados mysql é algo como 13Gigs, se é que isso importa.

Aqui está minha configuração:

[root@ProductionLinux root]# cat /etc/my.cnf
[mysqld]
server-id       = 71
log-bin         = /var/log/mysql/mysql-bin.log
binlog-do-db    = oldapplication
binlog-do-db    = newapplication
binlog-do-db    = support
thread_cache_size = 30
key_buffer_size = 256M
table_cache = 256
sort_buffer_size = 4M
read_buffer_size = 1M
skip-name-resolve

innodb_data_home_dir            = /usr/local/mysql/data/
innodb_data_file_path           = InnoDB:100M:autoextend
set-variable                    = innodb_buffer_pool_size=70M
set-variable                    = innodb_additional_mem_pool_size=10M
set-variable                    = max_connections=500
innodb_log_group_home_dir       = /usr/local/mysql/data
innodb_log_arch_dir             = /usr/local/mysql/data
set-variable                    = innodb_log_file_size=20M
set-variable                    = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit  = 1
log-queries-not-using-indexes
log-error = /var/log/mysql/mysql-error.log
mysql> show variables;
+---------------------------------+-----------------------------------------------------------------------------+
| Variable_name                   | Value                                                                       |
+---------------------------------+-----------------------------------------------------------------------------+
| auto_increment_increment        | 1                                                                           |
| auto_increment_offset           | 1                                                                           |
| automatic_sp_privileges         | ON                                                                          |
| back_log                        | 50                                                                          |
| basedir                         | /usr/local/mysql-standard-5.0.18-linux-x86_64-glibc23/                      |
| binlog_cache_size               | 32768                                                                       |
| bulk_insert_buffer_size         | 8388608                                                                     |
| character_set_client            | latin1                                                                      |
| character_set_connection        | latin1                                                                      |
| character_set_database          | latin1                                                                      |
| character_set_results           | latin1                                                                      |
| character_set_server            | latin1                                                                      |
| character_set_system            | utf8                                                                        |
| character_sets_dir              | /usr/local/mysql-standard-5.0.18-linux-x86_64-glibc23/share/mysql/charsets/ |
| collation_connection            | latin1_swedish_ci                                                           |
| collation_database              | latin1_swedish_ci                                                           |
| collation_server                | latin1_swedish_ci                                                           |
| completion_type                 | 0                                                                           |
| concurrent_insert               | 1                                                                           |
| connect_timeout                 | 5                                                                           |
| datadir                         | /usr/local/mysql/data/                                                      |
| date_format                     | %Y-%m-%d                                                                    |
| datetime_format                 | %Y-%m-%d %H:%i:%s                                                           |
| default_week_format             | 0                                                                           |
| delay_key_write                 | ON                                                                          |
| delayed_insert_limit            | 100                                                                         |
| delayed_insert_timeout          | 300                                                                         |
| delayed_queue_size              | 1000                                                                        |
| div_precision_increment         | 4                                                                           |
| engine_condition_pushdown       | OFF                                                                         |
| expire_logs_days                | 0                                                                           |
| flush                           | OFF                                                                         |
| flush_time                      | 0                                                                           |                                                             |
| ft_max_word_len                 | 84                                                                          |
| ft_min_word_len                 | 4                                                                           |
| ft_query_expansion_limit        | 20                                                                          |
| ft_stopword_file                | (built-in)                                                                  |
| group_concat_max_len            | 1024                                                                        |
| have_archive                    | YES                                                                         |
| have_bdb                        | NO                                                                          |
| have_blackhole_engine           | NO                                                                          |
| have_compress                   | YES                                                                         |
| have_crypt                      | YES                                                                         |
| have_csv                        | NO                                                                          |
| have_example_engine             | NO                                                                          |
| have_federated_engine           | NO                                                                          |
| have_geometry                   | YES                                                                         |
| have_innodb                     | YES                                                                         |
| have_isam                       | NO                                                                          |
| have_ndbcluster                 | NO                                                                          |
| have_openssl                    | NO                                                                          |
| have_query_cache                | YES                                                                         |
| have_raid                       | NO                                                                          |
| have_rtree_keys                 | YES                                                                         |
| have_symlink                    | YES                                                                         |
| init_connect                    |                                                                             |
| init_file                       |                                                                             |
| init_slave                      |                                                                             |
| innodb_additional_mem_pool_size | 10485760                                                                    |
| innodb_autoextend_increment     | 8                                                                           |
| innodb_buffer_pool_awe_mem_mb   | 0                                                                           |
| innodb_buffer_pool_size         | 73400320                                                                    |
| innodb_checksums                | ON                                                                          |
| innodb_commit_concurrency       | 0                                                                           |
| innodb_concurrency_tickets      | 500                                                                         |
| innodb_data_file_path           | InnoDB:100M:autoextend                                                      |
| innodb_data_home_dir            | /usr/local/mysql/data/                                                      |
| innodb_doublewrite              | ON                                                                          |
| innodb_fast_shutdown            | 1                                                                           |
| innodb_file_io_threads          | 4                                                                           |
| innodb_file_per_table           | OFF                                                                         |
| innodb_flush_log_at_trx_commit  | 1                                                                           |
| innodb_flush_method             |                                                                             |
| innodb_force_recovery           | 0                                                                           |
| innodb_lock_wait_timeout        | 50                                                                          |
| innodb_locks_unsafe_for_binlog  | OFF                                                                         |
| innodb_log_arch_dir             | /usr/local/mysql/data                                                       |
| innodb_log_archive              | OFF                                                                         |
| innodb_log_buffer_size          | 8388608                                                                     |
| innodb_log_file_size            | 20971520                                                                    |
| innodb_log_files_in_group       | 2                                                                           |
| innodb_log_group_home_dir       | /usr/local/mysql/data                                                       |
| innodb_max_dirty_pages_pct      | 90                                                                          |
| innodb_max_purge_lag            | 0                                                                           |
| innodb_mirrored_log_groups      | 1                                                                           |
| innodb_open_files               | 300                                                                         |
| innodb_support_xa               | ON                                                                          |
| innodb_sync_spin_loops          | 20                                                                          |
| innodb_table_locks              | ON                                                                          |
| innodb_thread_concurrency       | 20                                                                          |
| innodb_thread_sleep_delay       | 10000                                                                       |
| interactive_timeout             | 28800                                                                       |
| join_buffer_size                | 131072                                                                      |
| key_buffer_size                 | 268435456                                                                   |
| key_cache_age_threshold         | 300                                                                         |
| key_cache_block_size            | 1024                                                                        |
| key_cache_division_limit        | 100                                                                         |
| language                        | /usr/local/mysql-standard-5.0.18-linux-x86_64-glibc23/share/mysql/english/  |
| large_files_support             | ON                                                                          |
| large_page_size                 | 0                                                                           |
| large_pages                     | OFF                                                                         |
| license                         | GPL                                                                         |
| local_infile                    | ON                                                                          |
| locked_in_memory                | OFF                                                                         |
| log                             | OFF                                                                         |
| log_bin                         | ON                                                                          |
| log_bin_trust_function_creators | OFF                                                                         |
| log_error                       | /var/log/mysql/mysql-error.log                                              |
| log_slave_updates               | OFF                                                                         |
| log_slow_queries                | OFF                                                                         |
| log_warnings                    | 1                                                                           |
| long_query_time                 | 10                                                                          |
| low_priority_updates            | OFF                                                                         |
| lower_case_file_system          | OFF                                                                         |
| lower_case_table_names          | 0                                                                           |
| max_allowed_packet              | 1048576                                                                     |
| max_binlog_cache_size           | 18446744073709551615                                                        |
| max_binlog_size                 | 1073741824                                                                  |
| max_connect_errors              | 10                                                                          |
| max_connections                 | 500                                                                         |
| max_delayed_threads             | 20                                                                          |
| max_error_count                 | 64                                                                          |
| max_heap_table_size             | 16777216                                                                    |
| max_insert_delayed_threads      | 20                                                                          |
| max_join_size                   | 18446744073709551615                                                        |
| max_length_for_sort_data        | 1024                                                                        |
| max_relay_log_size              | 0                                                                           |
| max_seeks_for_key               | 18446744073709551615                                                        |
| max_sort_length                 | 1024                                                                        |
| max_sp_recursion_depth          | 0                                                                           |
| max_tmp_tables                  | 32                                                                          |
| max_user_connections            | 0                                                                           |
| max_write_lock_count            | 18446744073709551615                                                        |
| multi_range_count               | 256                                                                         |
| myisam_data_pointer_size        | 6                                                                           |
| myisam_max_sort_file_size       | 9223372036854775807                                                         |
| myisam_recover_options          | OFF                                                                         |
| myisam_repair_threads           | 1                                                                           |
| myisam_sort_buffer_size         | 8388608                                                                     |
| myisam_stats_method             | nulls_unequal                                                               |
| net_buffer_length               | 16384                                                                       |
| net_read_timeout                | 30                                                                          |
| net_retry_count                 | 10                                                                          |
| net_write_timeout               | 60                                                                          |
| new                             | OFF                                                                         |
| old_passwords                   | OFF                                                                         |
| open_files_limit                | 2510                                                                        |
| optimizer_prune_level           | 1                                                                           |
| optimizer_search_depth          | 62                                                                          |
| pid_file                        | /usr/local/mysql/data/ProductionLinux.pid                                   |
| port                            | 3306                                                                        |
| preload_buffer_size             | 32768                                                                       |
| protocol_version                | 10                                                                          |
| query_alloc_block_size          | 8192                                                                        |
| query_cache_limit               | 1048576                                                                     |
| query_cache_min_res_unit        | 4096                                                                        |
| query_cache_size                | 0                                                                           |
| query_cache_type                | ON                                                                          |
| query_cache_wlock_invalidate    | OFF                                                                         |
| query_prealloc_size             | 8192                                                                        |
| range_alloc_block_size          | 2048                                                                        |
| read_buffer_size                | 1044480                                                                     |
| read_only                       | OFF                                                                         |
| read_rnd_buffer_size            | 262144                                                                      |
| relay_log_purge                 | ON                                                                          |
| relay_log_space_limit           | 0                                                                           |
| rpl_recovery_rank               | 0                                                                           |
| secure_auth                     | OFF                                                                         |
| server_id                       | 71                                                                          |
| skip_external_locking           | ON                                                                          |
| skip_networking                 | OFF                                                                         |
| skip_show_database              | OFF                                                                         |
| slave_compressed_protocol       | OFF                                                                         |
| slave_load_tmpdir               | /tmp/                                                                       |
| slave_net_timeout               | 3600                                                                        |
| slave_skip_errors               | OFF                                                                         |
| slave_transaction_retries       | 10                                                                          |
| slow_launch_time                | 2                                                                           |
| socket                          | /tmp/mysql.sock                                                             |
| sort_buffer_size                | 4194296                                                                     |
| sql_mode                        |                                                                             |
| sql_notes                       | ON                                                                          |
| sql_warnings                    | ON                                                                          |
| storage_engine                  | MyISAM                                                                      |
| sync_binlog                     | 0                                                                           |
| sync_frm                        | ON                                                                          |
| sync_replication                | 0                                                                           |
| sync_replication_slave_id       | 0                                                                           |
| sync_replication_timeout        | 10                                                                          |
| system_time_zone                | CST                                                                         |
| table_cache                     | 256                                                                         |
| table_lock_wait_timeout         | 50                                                                          |
| table_type                      | MyISAM                                                                      |
| thread_cache_size               | 30                                                                          |
| thread_stack                    | 262144                                                                      |
| time_format                     | %H:%i:%s                                                                    |
| time_zone                       | SYSTEM                                                                      |
| timed_mutexes                   | OFF                                                                         |
| tmp_table_size                  | 33554432                                                                    |
| tmpdir                          |                                                                             |
| transaction_alloc_block_size    | 8192                                                                        |
| transaction_prealloc_size       | 4096                                                                        |
| tx_isolation                    | REPEATABLE-READ                                                             |
| updatable_views_with_limit      | YES                                                                         |
| version                         | 5.0.18-standard-log                                                         |
| version_comment                 | MySQL Community Edition - Standard (GPL)                                    |
| version_compile_machine         | x86_64                                                                      |
| version_compile_os              | unknown-linux-gnu                                                           |
| wait_timeout                    | 28800                                                                       |
+---------------------------------+-----------------------------------------------------------------------------+
210 rows in set (0.00 sec)
    
por Joseph Yancey 08.01.2011 / 10:51

2 respostas

1

Porque você usa uma versão antiga do MySQL que não se adapta bem a múltiplos núcleos.

Tente atualizar:)

    
por 08.01.2011 / 13:00
6

Isso parece um efeito óbvio de atualizar uma única tabela MyISAM. A tabela inteira está bloqueada durante as gravações.

Use mais tabelas ou altere as gravações pesadas para o InnoDB. Como a escolha do mecanismo de tabela é por tabela, não por banco de dados, você pode escolher o que é melhor para cada um.

Lembre-se, o MyISAM é rápido para tabelas de leitura maior, o InnoDB é melhor para quase todo o resto.

Além disso, se você tiver uma única tabela com tantas gravações, considere alterar sua arquitetura. gerenciadores de filas de verificação (para enviar essas atualizações para uma tarefa não interativa) ou mecanismos somente de anexação (rápido para logs ou arquivos, se é isso que você está fazendo) ou um tipo diferente de servidor para tarefas restritas (como um -memory DB se você estiver fazendo muito processamento temporário antes de gravar os resultados finais em um armazenamento mais persistente)

    
por 08.01.2011 / 13:39

Tags