我如何让mysqld使用我的CPU的24.9%以上?

我有一个在RHEL上运行Apache和MySQL的Web服务器。 它有一个四核3.2Ghz Xeon CPU和8 Gig的RAM大多数时候,我们没有任何问题。

我们的Web应用程序非常密集。 当我们的用法变得非常重时,MySQL会使用24.9%的cpu。 大多数情况下,大约在5%以下。 我推测,它只使用CPU的一个核心,它是挂出核心,但TOP显示我在CPU列mysqld改变核心,甚至在使用率保持在24.9%。 当它这样做时,得到痛苦缓慢,因为它排队查询是否有一些神奇的configuration,会告诉MySQL使用更多的CPU时,需要? 此外,对我的configuration任何其他意见将是有益的。

我们在这台服务器上运行两个应用 一个运行Innodb,但没有得到太多的使用(它已被replace为其他应用程序),并运行MyIsam并获得大量的使用。 总的来说,我们的整个mysql数据目录就像13Gigs一样,

这是我的configuration:

 [root @ ProductionLinux root]#cat /etc/my.cnf
的[mysqld]
服务器ID = 71
 log-bin = /var/log/mysql/mysql-bin.log
 binlog-do-db = oldapplication
 binlog-do-db = newapplication
 binlog-do-db =支持
 thread_cache_size = 30
 key_buffer_size = 256M
 table_cache = 256
 sort_buffer_size = 4M
 read_buffer_size = 1M
跳过名称parsing

 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-error = /var/log/mysql/mysql-error.log
 mysql>显示variables;
 + --------------------------------- + --------------- -------------------------------------------------- ------------ +
 | variables名| 值|
 + --------------------------------- + --------------- -------------------------------------------------- ------------ +
 |  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/ |
 |  collat​​ion_connection |  latin1_swedish_ci |
 |  collat​​ion_database |  latin1_swedish_ci |
 |  collat​​ion_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 |
 | 冲洗|  OFF |
 |  flush_time |  0 |  |
 |  ft_max_word_len |  84 |
 |  ft_min_word_len |  4 |
 |  ft_query_expansion_limit |  20 |
 |  ft_stopword_file |  (内置)|
 |  group_concat_max_len |  1024 |
 |  have_archive | 是|
 |  have_bdb |  NO |
 |  have_blackhole_engine |  NO |
 |  have_compress | 是|
 |  have_crypt | 是|
 |  have_csv |  NO |
 |  have_example_engine |  NO |
 |  have_federated_engine |  NO |
 |  have_geometry | 是|
 |  have_innodb | 是|
 |  have_isam |  NO |
 |  have_ndbcluster |  NO |
 |  have_openssl |  NO |
 |  have_query_cache | 是|
 |  have_raid |  NO |
 |  have_rtree_keys | 是|
 |  have_symlink | 是|
 |  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 |
 | 语言|  /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 |
 | 许可|  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_pa​​cket |  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 |
 | 新的|  OFF |
 |  old_passwords |  OFF |
 |  open_files_limit |  2510 |
 |  optimizer_prune_level |  1 |
 |  optimizer_search_depth |  62 |
 |  pid_file |  /usr/local/mysql/data/ProductionLinux.pid |
 | 端口|  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 | 可重复阅读|
 |  updatable_views_with_limit | 是|
 | 版本|  5.0.18-standard-log |
 |  version_comment |  MySQL社区版 - 标准(GPL)|
 |  version_compile_machine |  x86_64 |
 |  version_compile_os |  unknown-linux-gnu |
 |  wait_timeout |  28800 |
 + --------------------------------- + --------------- -------------------------------------------------- ------------ +
设置210行(0.00秒)

因为您使用的MySQL版本不能很好地与多核心一起扩展。

尝试升级:)

这似乎是更新单个MyISAM表的明显效果。 整个表在写入过程中被locking。

要么使用更多的表,要么将大量写入InnoDB。 由于表引擎的select是每个表,而不是每个数据库,你可以select什么是最好的每一个。

请记住,MyISAM对大多数表格来说是快速的,InnoDB几乎适用于其他任何地方。

另外,如果你有一个有这么多写操作的表,考虑改变你的架构。 检查队列pipe理器(将这些更新发送到非交互式任务),或者追加引擎(快速logging日志或归档,如果这是你正在做的事情),或者是一种不同types的服务器, – 如果在将最终结果写入更持久的存储之前进行大量的临时处理,则使用内存数据库)