服务器宕机改进方案

系统环境apache+php+mysql

  1. 如果不是必要的情况下,mysql的表引擎推荐使用myISAM
  2. php代码中做输入过滤,防止SQL注入等诸多问题
  3. php代码中,在程序入口,最好检测下User-Agent,屏蔽爬虫
  4. php无论使用什么框架,尽可能转换为静态页面,因为每次解析都要消耗很大的内存
  5. 远程登录端口(默认3389),修改掉入:3000,之后使用ip:port就可以登录,修改端口后,服务器的防火墙记得允许该端口权限。很多时候网络宽带被占用,都是因为暴力破解,修改端口可以最大程度解决这个问题
----------2017年3月8日
在使用过以上的方法后,服务器运行时间延长,大概能持续运行4-7天,再次出现宕机,远程连接服务器,发现mysql无法启动,只能重启服务器。
问题发现:
1.网站每天都很多类似爬虫的访问
2.虽然已经使用静态页面,但实际上是针对单个页面的,所以在打开新页面时,部分公用数据任然实时查询,没有做查询数据缓存
3.网站首页有一个视屏,用的是html+object做的,使用浏览器控制(network)台发现,这个播放器组件一进来页面不管视屏是否播放都会加载视屏,所以当前页面的隐形带宽占用很大,请求耗时很长
改进方案:
1.网站前台页面的数据,改为使用查询缓存,就算页面不同一样可以使用该缓存,尽可能让请求少穿透到数据库,因为数据库查询是需要消耗内存和时间的
2.网站首页更换一个视屏播放器插件,做到至少,点击播放后再请求视屏,毕竟很少有人会看宣传视屏,可以减少服务器压力
改进结果:
改进后,页面的请求消耗的带宽减少,减少了一部分数据库查询开销,当页面静态化完成时,无服务器内存稳定在740-840M之间,比较稳定。
-----------------2017年3月15日
服务器在运行一段时间后,依然会出现数据库无法连接的情况,mysql的error.log中并没有出现错误,在连接数据库时出现mysql服务启动无法连接(can't connect to mysql 1055),根据博客上:http://blog.csdn.net/lz610756247/article/details/61914523说的原因是,此问题不是mysql应用程序的问题而是windows server system 的配置问题。因此需要修改windows server system的配置。Win32 error code 10055: 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。
解决方案:
根据博客在注册表上加入对应的配置项,可以正常连接数据库了。
----------2017年4月1日
长时间运行情况下,再次出现宕机,发现时winserver的某个程序突然占用太多内存,具体是哪个名字记不清了,后面在其他服务器上发现在服务中把windows update关闭,内存就下来了。
至2017年4月26日,系统正常运行没有出现过错误和宕机。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值