最近阿里云搞活动,看了一下ECS服务器感觉挺划算,再加上本来就想把服务器迁移到国内,就买了阿里云的云服务器,本站流量一般,就买了1G内存的服务器,安装了LAMP环境(linux+apache+mysql+php),备案期间,测试网络环境一切正常,备案结束我的小站就正式在阿里云运行了,可就在前几天,打开博客,显示建立数据库连接失败,登录服务器一看日志,out of memroy了,mysqld进程被kill了,这是linux服务器的自我保护机制,当内存满了以后会自动杀死占用内存最高的进程,而mysqld正是最高的进程,结果被杀,导致网页显示建立数据库连接失败。
看了一下网站的PV,排除被攻击,然后重启服务器,问题暂时解决,大约一天后,问题又出现了,我想,这应该不是偶然的事件,应该是哪里设置存在问题了。
这次我没有急于重启,而是利用top查看了一下进程,结果发现httpd这个进程非常多,而且每个进程都占用了大概40M左右的内存,导致内存严重不足。然后重启httpd,内存占有率就低了,可过了一段时间httpd进程数量又开始增加了,内存占有率也开始攀升,这时我就想到了,可能是httpd.conf配置文件的问题,进程配置数量过多导致内存溢出。
在设置httpd.conf之前,要先确定目前apache的工作模式,我就是调整错了工作模式,走了弯路,具体啥弯路就不细说了。
远程连接阿里云,输入httpd -l,查看apache的