程序员程序猿阵线联盟-汇总各类技术干货MySQL数据库

如何在配置只有1G内存的服务器上部署Tomcat和Mysql

2018-11-08  本文已影响5人  朱潘

最近用Java写了个博客,希望部署在自己的服务器上面。这个服务器是在腾讯云上面买的,配置很低,只有一核1G的内存。运行了Mysql之后就已经占用了50%~60%的内存,这个我是通过top命令来查看的。然后就是运行Tomcat,tomcat里面放了java项目之后,运行起来java进程占用内存高达30%。然后我就收到了一大堆的告警邮件,大意就是内存使用超过80%。

u1.jpg

我开始以为是要改项目,拼命想着裁剪项目功能,减少表的数量,思考了很久,精简了一些不必要的表,不必要的代码。然后发现,这并没有任何效果。总共有25个表,主要是几个系统表和一些代码生成的表。真正用于保存文章构造网页菜单的就只有三个表。而存数据比较多的表就只有浏览记录表,每一个用户请求界面时都会记录一次操作,这个表数据比较多,但是初始阶段根本就没有数据。

后来我百度了一下,查了一些资料,发现原来是可以通过修改mysql的配置文件my.cnf来达到让降低mysql的运行内存。主要是修改了如下三个参数,最终将mysql的运行内存降到了13%,相当于只有100多M的运行内存。

u2.jpg

而修改的这三哥参数是:

u3.jpg

innodb_buffer_poor_size = 64Mperformance_schema_max_table_instances=100table_definition_cache=100table_open_cache=64

通常情况下,作为开发人员,我们都不会去关心这些参数代表什么,也不会去修改他们,但是当自己也要去部署项目的时候发现,不得不修改他们来达到自己的目的。这个时候就要有一些了解才好下手操作了。innodb_buffer_poor_size用于缓存索引和数据的内存大小,这个当然是越大越好,毕竟数据在内存中的读取速度更快,但是考虑到自己开发的博客的需求,完全可以将它设置得非常小。参数performance_schema_max_table_instances用于检测表对象最大数目,对于小站而言这个缓存大小完全不必要太大。table_definition_cache用于设置表定义得缓存区大小。table_open_cache用于设置打开表的缓存区大小。

将这几个参数调小之后重启mysql,完全不影响小站点的运行,访问速度也没有什么影响。这样我的博客就在1G内存的服务器上面运行起来了。是不是很简单呢?

u4.jpg
上一篇下一篇

猜你喜欢

热点阅读