我有一个在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/ | | 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 | | 冲洗| 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_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 | | 新的| 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的服务器, – 如果在将最终结果写入更持久的存储之前进行大量的临时处理,则使用内存数据库)