英语轻松读发新版了,欢迎下载、更新

上线网站后cpu一直占满,请教性能问题

sbicrgw 发布于 2014年06月04日
无人欣赏。

之前我们做的都是企业信息管理项目,对互联网项目没有经验,今年开始创业做比特币交易平台之类的项目,因为受到攻击,所以遇到了些困难,各种攻击不断,中国互联网太乱了吧!现在有些疑惑,希望论坛大神帮忙解答一下:

  1. 我查看网站的连接数在300个的时候cpu就100%,网站就卡死了。我们是用tomcat部署的,请问300个连接数是怎么样的概念,还是我们程序性能也太差了?(我们用的服务器是阿里云8核16G内存的)
  2. 因为我们确实没有高访问网站的运营经验,请教一下我们应该往哪方面做奴隶,或者有什么资料或者书籍方面推荐一下吗?
共45条回复
sbicrgw 回复于 2014年06月04日

我说的连接数300是在我们已经买了高防的cdn进行跳转以后的情况。用高防cdn之前,几秒钟网站就挂了!

玉楼 回复于 2014年06月04日

实在没法回答你的问题。CPU满很大可能是你程序写的有问题。高访问网站你要说出来希望有多高,300个连接是怎么看的?受到什么攻击了?synflood?

淮左青衣 回复于 2014年06月04日
  1. 你的所有请求直接进入tomcat?如果是这样的话,前端最好加一个nginx之类的服务器做反向代理,为静态资源和请求加上cache,不过看来你的静态资源已经上了cdn,那就给部分没有实时性要求的请求加上cahce吧。tomcat直接处理外网300多个连接,其实没有必要的。
  2. 这东西不是一两本书能教你的,在你城市里头找个熟悉互联网业务的人,请人吃几顿饭帮你看看吧。
  3. 我觉得你们是不是需要一个懂运维的人?
Lamb 回复于 2014年06月04日

先查看cpu被什么耗费了,有线程挂起吗?

youxiachai 回复于 2014年06月04日

你要找会攻击的人帮你优化才行.....

300连接...如果是一直占着的话....要么有很多很多人访问..要么就是人家在攻击你了..

JoeyYin 回复于 2014年06月04日

好吧,我很闲。今天来帮Tony老师撑场子。

服务器上去跑命令,看一下ESTABLISHED的连接有多少。 netstat -antp

如果连接过多不正常,那就是一次四层的攻击,也就是所有ip都是真实的。写个shell:

#!/bin/sh

do

for i in `netstat -an | grep -i ':80 '|grep 'EST' | awk '{print $5}' | cut -d : -f 1 | sort | uniq -c | awk '{if($1 > 50) {print $2}}'`

echo $i

echo $i >> /tmp/banip

/sbin/iptables -A INPUT -p tcp -j DROP -s $i

done

定时跑,5分钟一次。差不多就好了。

sbicrgw 回复于 2014年06月04日
  1. 连接数是通过netstat -na | grep ESTAB | grep 80 | wc -l这个命令查看的,这个数量是可以代表并发量吗?
  2. 交易平台就几个页面,基本都是实时性非常高的,所以nginx是没用了,高防cdn只是用来挡攻击用的。
  3. 我看到cpu都是tomcat占用的,有其他办法更新的查看是tomcat那个算法导致的吗?
sclzcq 回复于 2014年06月04日

可以看下每个线程的cpu占用情况

sbicrgw 回复于 2014年06月04日

还有我最想了解的是300个连接数是什么概念?完全没有做负载均衡什么的情况下,内存暂用这么高是不是程序的问题更大?还是300已经是不小的数字了?

forzaJuve 回复于 2014年06月04日

有可能是某个线程太吃cpu了.....我们以前有个做法就是写个脚本....监控 当某个进程占用cpu达到50% 就kill屌他

qyb 回复于 2014年06月04日

从Tony的帖子看到销售机会。。。。 我觉得没有运维经验的团队来玩互联网,首先应该考虑用PaaS而不是IaaS,所以推荐一下我们高大上的PaaS产品,搜狐云景 cloudscape.sohu.com, 目前处于邀请试用状态,我的手机是 139-1017-7625,or mailto:qiuyingbo#sohu-inc.com

sbicrgw 回复于 2014年06月04日

11楼 @qyb 晕,你们产品以后我考虑试试。现在帮我解答一下先把。

tinyfool 回复于 2014年06月04日

11楼 @qyb 哈哈

玉楼 回复于 2014年06月04日

9楼 @sbicrgw 300是个非常小的数,内存高CPU满一定是你程序有问题。

玉楼 回复于 2014年06月04日

6楼 @JoeyYin 你教的太多了,他不一定消化得了。还是 3楼 说的对,楼主需要找个技术顾问之类的——毕竟他要做的是交易平台,系统架构、安全性、性能等都非常重要,以他对问题的描述来看,至少楼主本人在技术上很不过关,自己摸索着做失败的可能性太大了。

sbicrgw 回复于 2014年06月04日

我有个站首页是静态页面啊,也是tomcat部署,压力测试300个连接数照样卡死...

玉楼 回复于 2014年06月04日

16楼 @sbicrgw 您这啥服务器啊?静态页面300都卡死?

tinyfool 回复于 2014年06月04日

16楼 @sbicrgw 学会分析和描述问题

你光说一个300个链接,cup满,不去看内存,不去看其他的东西,不去分析,这样没有任何办法的

去看所有可以看到的参数,分析,什么东西是原因,什么资源满了,还是什么,明白?

qyb 回复于 2014年06月04日

12楼 @sbicrgw 我把手机号码都贴了,已经足够有诚意。至于你的问题,如果你懂得 top, iostat,strace 等工具给大家更多信息会更好。

玉楼 回复于 2014年06月04日

tiny快把11楼的联系方式屏了,等 @qyb 交了广告费再打开。

flea 回复于 2014年06月04日

先把问题定位到吧 ~ 艾玛 第一次登录,发言 ps: 楼主tomcat 连接setting方式 是 nio 还是native

tinyfool 回复于 2014年06月04日

20楼 @玉楼 haha

ucgygah 回复于 2014年06月04日

先排除是否自己程序问题,用各种性能工具压下自己的网站,ab,siege.看下性能瓶颈在哪里?哪些页面比较慢。 是否有访问数据库,文件,io等比较慢。能用redis等高速缓存的尽量用起来。正式环境可以考虑用btrace跟踪下每个方法,每个业务逻辑的访问速度。然后tomcat改成nginx,最好做个负载均衡,nginx可以做,LVS也可以。当然nginx更简单些。 以上单页面的访问qps 最好能在200-300,响应时间在0.5秒内。像你这个硬件配置应该问题不大。CDN加速各种图片,CSS都用上。前端优化能做的做起来。 如果的确是访问量大,那就按性能测试的情况加机器吧。

我的8核 2.50G 16G linux随便能抗住400并发,4500 qps,87.322 ms 每个响应。一个没业务逻辑的jsp页面

qyb 回复于 2014年06月04日

20楼 @玉楼 楼歪了,对了,tiny这里怎么收广告费?

JoeyYin 回复于 2014年06月04日

你先确认是被人四层ddos了。(不过以你的问题来看你这个都确认不了……)

首先来看,你问的问题可能性太多,在论坛上可能找不到合适的答案。 找个技术专家或者安全专家帮你看下吧。首先定位问题。说句老实话,你现在可能连问题都没定位对。

hxiyao 回复于 2014年06月04日

楼上很多人说的都不靠谱,代码问题只需要用APM工具做一个profiling就可以定位到代码级别了。如果有兴趣可以加我QQ 911611832

jacarrichan 回复于 2014年06月04日

6楼 @JoeyYin

#!/bin/sh  
 do
 for i in `netstat -an | grep -i ':80 '|grep 'EST' | awk '{print $5}' | cut -d : -f 1 | sort | uniq -c | awk '{if($1 > 50) {print $2}}'`

 echo $i

 echo $i >> /tmp/banip

 /sbin/iptables -A INPUT -p tcp -j DROP -s $i

 done

这个代码的意思是不是将80端口上连接数超过50的ip交给iptables封掉?

alleywind 回复于 2014年06月04日

部署在tomcat,用java写的吧?用jmap或者jstack工具,看下堆栈的情况。 jvm有做过优化么?

ucgygah 回复于 2014年06月04日

27楼 @jacarrichan 是的

sbicrgw 回复于 2014年06月04日

18楼 @tinyfool 好吧。回复中有很多建议了,虽然不能马上帮到我解决问题,但是至少给我不少解决问题的思路,谢谢大家!

tinyfool 回复于 2014年06月04日

24楼 @qyb 暂时不收广告费,但是欢迎点击页首的捐赠,娃哈哈

sbicrgw 回复于 2014年06月04日

31楼 @tinyfool 可以换百度联盟的广告,我的下载站点击单价接近1块钱。

Archfeed 回复于 2014年06月04日

CDN是不存储动态内容的,你动态内容多的话其实起不到太大作用。。。没做过tomcat的项目不过以前接触过lamp的项目,初期也是晚上高峰时段15分钟就挂,但我们的问题不在cpu上,因为cpu占用一直很低,我们当时的问题在查询优化,和session读写目录优化上。开了慢查询记录,一堆>100s的查询请求,把这些挨个排除掉解决了大部分问题,最后。。。我们那个项目程序员辩称他以前写java的,对php+mysql不熟。。。

玉楼 回复于 2014年06月04日

33楼 @Archfeed 对这种人就要狠收拾——有问题不怕,人总是在工作中学习进步的,就怕找借口。不管以前写啥,自己写完的东西自己不测测吗?

Archfeed 回复于 2014年06月04日

34楼 @玉楼 程序把功能完成就不管了,以前的项目网站都没什么人看的,这个第一次和社交媒体合作,推广一打出去,那个流量吓死人。作为全公司唯一的IT支持人员,压力那个大啊,各种求爷爷告奶奶找人帮忙看看。重新优化后不放心,又在公司搭了个模拟环境,Squid+多台web,然后找外包公司来做压力测试,这才敢放线上。。。

tinyfool 回复于 2014年06月04日

32楼 @sbicrgw 一块钱什么意思?

sbicrgw 回复于 2014年06月04日

36楼 @tinyfool 就是广告的点击收入,一个点击平均是一块钱的收入。我说的是百度联盟,但是点击率只有千分之三左右。我之前放过谷歌的广告,点击收入比这个低很多。

tinyfool 回复于 2014年06月04日

37楼 @sbicrgw 你说这个没办法比较啊,你就说说你多少pv,月收入多少钱吧

sbicrgw 回复于 2014年06月04日

38楼 @tinyfool 6千ip,8万pv,每天两百多个点击,两百多块收入,波动很小。

tinyfool 回复于 2014年06月04日

39楼 @sbicrgw 不错啊,一个月有6000多呢,我pv没那么高,呵呵

sbicrgw 回复于 2014年06月04日

40楼 @tinyfool 运气好,前年国庆在家闲着发慌做的,现在没管理,一直有忠实用户访问。这也是我大胆出来创业的原因,反正饿不死!还有,你怎么做到论坛里每个人回复你你都能这么及时知道,难道你一直在这边刷?

tinyfool 回复于 2014年06月05日

41楼 @sbicrgw 邮件通知……

tinyfool 回复于 2014年06月05日

41楼 @sbicrgw 啥网站,链接发来看看

CurveSoft 回复于 2014年06月06日

JAVA程序CPU高,多半是框架使用不当,或者业务计算太复杂,拿jprofiler一跑就知道了,直接跟踪到函数级别。

watcher 回复于 2014年06月09日

33楼 @Archfeed 测试的话跟CDN没什么关系吧,甚至要排除在外,因为你也不知道你用户都分布在那些节点,也许cdn就对你测试的时候起作用也说不定吧!

本帖有45个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]