阿里云服务器CPU经常跑满怎么回事

阿里云服务器CPU经常跑满怎么回事,第1张

应该是你网站被攻击了,如DDOS/CC攻击这些都是消耗你服务器资源的。解决办法是购买阿里云高防IP,防火墙。不过阿里云的价格贵死。推荐你用百度云加速的吧。
百度云加速是百度旗下为网站提供一站式加速、安全防护和搜索引擎优化的产品。百度云加速是市场占有率最高的云加速产品之一,正为数十万用户的近百万网站提供CDN、网络安全和SEO服务。每天处理十亿级的PV流量及数百亿TB的数据流量,并提供市场顶尖水平的稳定性和抗攻击能力。
百度云加速以部署于骨干网的数据中心为支撑,结合百度深度学习技术,为您的网站提供性能和流量优化,致力与广大开发者一起于打造开放、安全的云服务生态系统。 我们希望更多的网站合作伙伴以及中小企业能受益于百度云加速带来的价值及红利,从而使得云生态能够更加良性的发展。
百度云加速为用户提下以下三大类功能:
1、网站加速
百度云加速节点遍布全中国,通过智能DNS解析等技术,将访问网站的用户引导至最快的节点,通过动静态加速及页面优化技术,极大的提高网站的访问速度和用户体验。此外,还可以大量节省网站自身的服务计算和带宽资源。
2、安全防护
百度云加速可以同时防护包括SQL注入、XSS、Web服务器漏洞、应用程序漏洞以及文件访问控制等问题在内的十多种黑客渗透攻击和SYN Flood、UDP Flood、ICMP Flood、TCP Flood以及CC在内的多种DDoS攻击。
3、SEO
百度云加速的百度蜘蛛DNS同步功能,可以做到和百度蜘蛛实时同步DNS信息,保证百度蜘蛛的正常抓取,保证搜索引擎权重的稳定性;通过死链自动提交、sitemap自动提交,及时收录网站信息,提高网站索引量。

一、背景和现象

初创公司,架构lanmp,web前端和后端分开服务器,业务驱动主要是nginx和apache,nginx主要是处理静态文件和反向代理,前后端、搜索引擎、缓存、队列等附加的服务都是用docker容器部署。因为比较初级,上传文件和采集文件都是直接写在硬盘上,涉及到的目录共享,就在其中一台服务器存储并且nfs共享。我们暂且分为ECS1(apache1)、ECS2(apache2)、ECS3(nginx)。某天网站业务中断,但是没有报错。一直在等待响应,默认响应超时是一分钟,所以很基础高可用没有起到作用。中断10分钟左右,重启服务,提示“open too many files”,但是lsof统计没几个。因为初级处理不了,所以直接重启服务器,一段时间后一切恢复正常,可是第二天又来一次这种情况。

二、第一次出现后的排查思路

本来第一次发现这种问题的时候就要追查原因了,看了一下zabbix监控图像其中断了十分钟,包括网络、内存、CPU、硬盘、IO等监控数据。首先想到的是网络问题,结论是zabbix-servert获取不到了zabbix-agent采集的数据,估计就是网络不通了。
但是,这个结论站不住脚,因为我本身通过ssh登录服务器,并且命令输入无卡顿,不至于头文件都传不过来。后来一看阿里云的云监控,上面有数据,似乎也可以佐证网络这个说法,因为云监控是阿里云内部的监控,可以内网获取到监控数据。直到看CPU的使用率这项,发现有一段时间的CPU使用率100%。并且我重启的时候CPU恢复正常,不能说网络一定没问题,但系统肯定有问题。也可以解释因为CPU使用已经是100%,zabbix-agent和根本不能正常运行,所以没有监控数据。因为这个公司全部都是云服务器,没有使用IDC所以我们也没有安装smokeping来监控,接着我们就不把重心在网络上了。

目前掌握的信息就是:在毫无征兆的情况下,CPU暴涨到100%,重启之前一直保留,重启之后恢复原样。匆忙之中又看了一下系统各日志,因为太匆忙,没有总结,没有找到什么有价值的东西。现在有下面几种猜想:第一,程序的bug或者部署不当,触发之后耗尽资源。第二、docker容器的bug。第三、网络攻击。第四、病毒入侵。第五、阿里云方系统不稳定。

小总结了一下,现在问题还没有找出来。下次还有这个问题的可能,所以先尽量防范,但是又不能重启一刀切。所以在zabbix上面设置了自动化,当检测到ECS1获取不到数据的时候马上 *** 作ECS3标记后端为ECS1的apache为down。保留异常现场。(请求停止的时候,CPU100%还在)

三、现场排查

1、相应的排查计划(想到这些信息需要获取的,实际上没有严格按照这样的步骤)

1)用htop和top命令监控CPU、内存使用大的进程。先看看哪个进程消耗资源较多,用户态、内核态、内存、IO……同时sar -b查io的 历史 定时抽样。

2)统计tcp连接数,看看有没有DDOS攻击。netstat -anp |grep tcp |wc -l 。用iftop-i eth1看看通讯。同时用tail -n 1200 /var/log/messages查看内核日志。

3)用pstree查看打开进程,ps aux|wc-l看看有没有特别多的进程。虽然zabbix监控上说没有,但是我们要检查一下看看有没有异常的进程名字。

4)查看全部容器的资源使用docker stats $(docker ps -a -q),看看能不能从容器上排查。

5)有了“too many open files”的启发,计算打开文件数目lsof|wc -l,根据进程看看ll /proc/PID/fd文件描述符有没有可疑的打开文件、文件描述符。

6)关于用lsof打开文件数找到的线索,排序打开文件找出进程号 lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

7)关于用lsof打开文件数找到的线索,用lsof -p PID查看进程打开的句柄。直接查看打开的文件。

8)启动容器的时候又总是“open too many files"。那就是打开文件数的问题,因为CPU的使用率是CPU的使用时间和空闲时间比,有可能因为打开文件数阻塞而导致CPU都在等待。针对连接数的问题,大不了最后一步试试echo 6553500 > /proc/sys/fs/file-max 测试打开文件对CPU的影响。

9)玩意测出来了消耗CPU的进程,可以使用strace最终程序。用户态的函数调用跟踪用「ltrace」,所以这里我们应该用「strace」-p PID

10)从程序里面看到调用系统底层的函数可以跟踪。跟踪 *** 作 strace -T -e -p PID,主要看看代码调用的函数有没有问题。

2、现场排查

第二天同样时间,ECS果然暴涨了CPU。这是时候zabbix的工作如希望进行保留了一台故障的ECS1给我。

1)用htop看到资源使用最大是,搜索引擎下我写的一个判断脚本xunsearchsh。脚本里面很简单,判断索引和搜索服务缺一个就全部重启。就当是我的容器有问题我直接关掉搜索引擎容器。>

一、系统架构防护措施

采用负载均衡的架构

数据库使用读写分离技术

二、账户多重验证

密码设置:复杂密码设置

手机验证:手机号验证码验证

数据防护:服务器数据加密

三、数据加密技术

严谨的备份机制

精确的授权体系

四、服务器安全

采用阿里云服务器

由阿里云提供DDoS防护、木马查杀、防暴力破解等服务通过多方国际安全认证

支持CRM系统私有化

软件和数据库部署在企业自己的服务器或企业购买的云服务器上

由企业自己掌握服务器(数据存储空间)的钥匙(密码)

此外,为了确保客户方资料、数据等安全,在CRM系统内还可对销售人员的 *** 作进行权限设置,通过限制员工的 *** 作来进行数据安全的保护等等。

如果网站域名已通过其他服务商成功备案,现要将域名及二级域名或其他子域名解析指向到阿里云服务器,使用阿里云服务器来托管网站,则需要在阿里云进行接入备案。

需要注意的是:

1、接入备案只是增加一个服务商数据,接入过程中无法变更信息;

2、接入成功后,不会影响在上家服务商处的备案数据,可同时使用两家服务商的服务器;

3、接入备案信息填写及上传证件需遵循当地管局备案规则中接入备案相关规则;

4、如果在阿里云有备案成功的主体,现要将此主体下其他服务商处备案的网站接入阿里云,需通过之前备案的阿里云账号登录备案系统,且填写的备案主体信息需保持一致。原万网ICP代备案管理平台用户需将原备案信息导入到阿里云账户中,再进行备案接入;

5、备案信息通过管局审核后,便可配置域名解析,将域名指向阿里云服务器开通访问;

6、接入成功后,根据通信管理局要求时间内对不符合目前实际情况的信息进行修改。

既然网速已经测试过了是正常的,则说明使用阿里云服务器有问题就是其他原因了,大体有如下几种,登录的服务器与自己的宽带不是同一运营商,这属于运营商之间的网络瓶颈,只能更换同一运营商的服务器。另外还可能此服务器端口速率过低或者处理能力不行造成的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13252058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-26
下一篇 2023-06-26

发表评论

登录后才能评论

评论列表(0条)

保存