CentOS上mysql占用内存过大之解决
本站刚换到阿里云服务器上,使用的是centos系统,相关环境都是自己手动安装的,昨天想在服务器上安装个ftp,却报内存分配失败,显然是内存不够了吗!使用top命令一查看,剩余内存还剩几兆,mysql自己就占用了系统一半多的内存(我购买的是1G内存的配置),这种情况哪能受得了。于是各种查找,最终算是解决了吧。
解决思路很明确,就是修改配置文件/etc/my.cnf,以下是我修改后的配置,大家请参考。
[mysqld] lower_case_table_names=1 character-set-server=utf8 max_connections = 300 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES key_buffer_size = 16k max_allowed_packet = 1M thread_stack = 64k sort_buffer_size = 64k net_buffer_length = 2k performance_schema_max_table_instances = 12500 table_open_cache_instances = 1 eq_range_index_dive_limit = 10 innodb_buffer_pool_dump_at_shutdown = OFF innodb_buffer_pool_load_at_startup = OFF innodb_checksum_algorithm = innodb innodb_file_format = Antelope innodb_file_format_max = Antelope innodb_large_prefix = OFF innodb_purge_threads = 1 innodb_strict_mode = OFF max_seeks_for_key = 4294967295 max_write_lock_count = 4294967295 myisam_max_sort_file_size = 2146435072 performance_schema_accounts_size = 100 performance_schema_hosts_size = 100 performance_schema_max_cond_instances = 6900 performance_schema_max_file_classes = 50 performance_schema_max_mutex_instances = 21000 performance_schema_max_rwlock_instances = 10800 performance_schema_max_table_handles = 4000 performance_schema_max_thread_instances = 2100 performance_schema_setup_actors_size = 100 performance_schema_setup_objects_size = 100 performance_schema_users_size = 100 sync_binlog = 0 innodb_buffer_pool_size = 8M innodb_log_buffer_size = 1M
上面的配置我是参考我本地的5.6.25配置修改的,因为我发现我本地的这个版本占用内存非常小。当然在windows上和linux上或许是有区别的。修改完之后mysql内存占用率下降到了26%左右,也就是占用260兆左右,现在我的剩余内存能保持在300兆左右了。
也是经过这个事情我才发现安装在linux上的mysql要比在windows上更吃内存,起初我以为是阿里云服务器的原因,查看了一下其他linux上的mysql占用内存情况也都在600兆左右,只不过其他服务器内存配置都挺高所以感觉不出来。
顺便说一下,我的版本是64位5.7.9,应该是发文此刻官网公布的最新版本。如果你也遇到了相同的问题,修改的时候需要参考你的具体版本,因为每个版本的变量名称都不尽相同,所以很难保证你将上述代码贴到自己配置文件中就一定能跑起来。如果遇到问题请查看mysql的日志文件/var/log/mysqld.log,里面的错误记录如[ERROR] unknown variable 'have_crypt=NO',这就表示你的版本没有have_crypt这个变量,删掉即可。
说明:观察了一两天内存又升上来了,现在又到五百多兆了,我会继续寻找办法,已解决的朋友请留言说明。
2019-11-22补充:
1.如果你用的是云服务器,加内存更直接,比如从1G升为2G,价钱就高了一点,还是比较划算的。
2.如果你不想加内存,可以采用云数据库,自己的服务器不安装了,直接把内存省下来,这里推荐腾讯云数据库,1年169元(相对来说已经很便宜了),大家可参考我这篇文章进行购买:《推荐一个个人用的便宜云数据库》
双11云服务器热购推广(腾讯云):2核+4G内存+3M带宽=688元/3年(仅限新用户)
-
1微信开发errcode:45015,errmsg:response out of time limit之完美解决
-
2archive is not a ZIP archive之解决
-
3火狐每次启动都弹出迅雷提示下载openh264之解决
-
4Eclipse中提示Could not find the main class之解决
-
5XML document structures must start and end within the same entity报错解决
-
6以小米6为例图说安卓手机如何安装谷歌四件套
-
7在微信中调用外部浏览器实现文件下载之解决
-
8U盘安装CentOS 7终极方案,简单有效
-
9POI合并单元格时CellRangeAddress类提示过时之解决
-
10java web项目代码不报错但是项目左上角有个红叉之解决