内容简介:最近用Java写了个博客,希望部署在自己的服务器上面。这个服务器是在腾讯云上面买的,配置很低,只有一核1G的内存。运行了Mysql之后就已经占用了50%~60%的内存,这个我是通过top命令来查看的。然后就是运行Tomcat,tomcat里面放了java项目之后,运行起来java进程占用内存高达30%。然后我就收到了一大堆的告警邮件,大意就是内存使用超过80%。我开始以为是要改项目,拼命想着裁剪项目功能,减少表的数量,思考了很久,精简了一些不必要的表,不必要的代码。然后发现,这并没有任何效果。总共有25个表
最近用 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
欢迎关注我的公众号“java工会”,一起交流技术
以上所述就是小编给大家介绍的《如何在配置只有1G内存的服务器上部署Tomcat和Mysql》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 在CentOS7上部署Memcached高性能内存缓存对象
- 理解高性能内存缓存对象缓存Memcached原理 (Memcached核心概念,部署)
- linux 部署golang 项目(直接部署和基于nginx部署)
- 1.内存优化(一)内存泄漏
- 内存泄露与内存溢出的区别
- 部署策略对比:蓝绿部署、金丝雀发布及其他
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。