高并发下怎么优化能避免服务器压力过大?


用户多,不代表你服务器访问量大,访问量大不一定你服务器压力大!我们换成专业点的问题,高并发下怎么优化能避免服务器压力过大?

1,整个架构:可采用分布式架构,利用微服务架构拆分服务部署在不同的服务节点,避免单节点宕机引起的服务不可用!
2,数据库:采用主从复制,读写分离,甚至是分库分表,表数据根据查询方式的不同采用不同的索引比如b tree,hash,关键字段加索引,sql避免复合函数,避免组合排序等,避免使用非索引字段作为条件分组,排序等!减少交互次数,一定不要用select *!

3,加缓存:使用诸如memcache,redis,ehcache等缓存数据库定义表,结果表等等,数据库的中间数据放缓存,避免多次访问修改表数据!登录信息session等放缓存实现共享!诸如商品分类,省市区,年龄分类等不常改变的数据,放缓存,不要放数据库!

同时要避免缓存雪崩和穿透等问题的出现导致缓存崩溃!

4,增量统计:不要实时统计大量的数据,应该采用晚间定时任务统计,增量统计等方式提前进行统计,避免实时统计的内存,CPU压力!

5,加图片服务器:图片等大文件,一定要单独经过文件服务器,避免IO速度对动态数据的影响!保证系统不会因为文件而崩溃!

6,HTML文件,枚举,静态的方法返回值等静态化处理,放入缓存!

7,负载均衡:使用nginx等对访问量过大的服务采用负载均衡,实现服务集群,提高服务的最大并发数,防止压力过大导致单个服务的崩溃!

8,加入搜索引擎:对于sql中常出现的like,in等语句,使用lucence或者solr中间件,将必要的,依赖模糊搜索的字段和数据使用搜索引擎进行存储,提升搜索速度!#注意:全量数据和增量数据进行定时任务更新!

9,使用消息中间件:对服务之间的数据传输,使用诸如rabbit mq,kafka等等分布式消息队列异步传输,防止同步传输数据的阻塞和数据丢失!

10,抛弃tomcat:做web开发,接触最早的应用服务器就是tomcat了,但是tomcat的单个最大并发量只能不到1w!采取netty等actor模型的高性能应用服务器!

11,多线程:现在的服务器都是多核心处理模式,如果代码采用单线程,同步方式处理,极大的浪费了CPU使用效率和执行时间!
12,避免阻塞:避免bio,blockingqueue等常常引起长久阻塞的技术,而改为nio等异步处理机制!

13,CDN加速:如果访问量实在过大,可根据请求来源采用CDN分流技术,避免大流量完成系统崩溃!

14,避免低效代码:不要频繁创建对象,引用,少用同步锁,不要创建大量线程,不要多层for循环!

当然还有更多的细节优化技术!

原文地址:http://blog.51cto.com/13732225/2156286

时间: 2024-10-22 19:05:35

高并发下怎么优化能避免服务器压力过大?的相关文章

优化Linux生产服务器的经验之谈

[51CTO独家特稿]如何优化自己的Linux生产服务器?本文结合实际的工作经验,总结了优化Linux生产服务器的九大要点.如果有些方法您尚未采用,不妨一试. 一.时间同步 生产环境下的服务器对时间的要求是精准的,我的邮件服务器的dovecot服务,以前经常因为时间问题自动停止服务,建议编辑 vim /etc/crontab 至今每天跟ntp时间服务器自动对时一次: 14 04 * * * root /usr/sbin/ntpdate ntp.api.bz > /dev/null 2>&

php后台操作以及一些减缓服务器压力的问题

上次提到一个微信投票系统,做了一个微信重定向解决了,一个授权复用的问题,昨天投票系统正式投入使用:测试的时候没有问题,上线后出现了一点小问题, 一:php页面参数接受和php中 switch 那个先执行? 答案: 是switch先执行 例:在index.php页面  header("location:/api/wx.php?action=putprofile&accessToken=".$accessToken."&openId=".$openId.

高并发下的 Nginx 优化与负载均衡

高并发下的 Nginx 优化 英文原文:Optimizing Nginx for High Traffic Loads 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apache迁移过来的,因些他们过去常常调整配置和执行魔术操作来确保服务器高效运行. 有一些坏消息要告诉你, 你不能像Apache一样优化Nginx.它没有魔术配置来减半负载或是让PHP运行速度加快一倍. 高兴的是, Nginx已经优化的非常好了. 当你决定使用Nginx并用a

高并发下的Nginx优化

高并发下的Nginx优化 2014-08-08 13:30 mood Nginx 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apache迁移过来的,因些他们过去常常调整配置和执行魔术操作来确保服务器高效运行. AD:2014WOT全球软件技术峰会北京站 课程视频发布 11月21日-22日 与WOT技术大会相约深圳 现在抢票 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apache

高并发下linux系统、业务结构性能优化——index(不断更新)

工作中零零散散写了些博客,总结了些知识,当然是从运维的角度.东西一多就乱,闲时突发奇想,这些东西能不能打在一个点上,如果能有一个东西把所有内容串起来并且有一个主题岂不妙哉,也方便查阅和阅读,就像一个网站有了内容后需要一个index主页一样,哈哈,然后就有了这篇置顶博文. 对于主题,我喜欢研究业务架构和大并发相关知识,就定为"高并发下linux系统.业务结构性能优化"了,现有目录结构是根据工作经验进行的梳理,以后会动态修改.我的知识非常有限,不乏有些错误认识,不管怎样抛砖引玉分享出来,希

高并发下的 Nginx 优化

英文原文:Optimizing Nginx for High Traffic Loads 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. 很多Nginx新用户是从Apache迁移过来的,因些他们过去常常调整配置和执行魔术操作来确保服务器高效运行. 有一些坏消息要告诉你, 你不能像Apache一样优化Nginx.它没有魔术配置来减半负载或是让PHP运行速度加快一倍. 高兴的是, Nginx已经优化的非常好了. 当你决定使用Nginx并用apt-get,yum或是mak

1. 网站高并发下的测试指标及优化泛谈

网站高并发下的测试指标: 1. 并发量:可以承接多少次请求. 2. 服务器负载:服务器的cpu/内存消耗. 3. 平均响应时间:处理一次请求花费的时间. 测试高并发时,一般的测试标准是在服务器负载为70%的时候可以处理多少次请求还有每次请求的平均响应时间是多少. 高并发下优化泛谈: 1. 优化服务器计算能力,升级服务器的性能. 2. 优化io时间.主要是优化sql,尽量减少访问硬盘的时间. 3. 优化线程切换.服务器单核cpu在一个时间点只会执行一个线程,不断的在进行线程切换,线程切换会影响服务

预估高并发下API服务器数量

我的主要工作就是api的编写,那么如何测试API响应时间,以及预计高并发服务器压力呢? 1 首先统计API每日访问总数,举例为a. API一般有访问日志,统计访问日志.linux下 用到类似grep   wc管道命令统计. 2 计算并发数. 这个怎么计算呢?预估一下.这里我们有这么一个原则:80%流量集中在20%时间. m = a*0.8/(24*0.2*3600) 得到每秒的大概并发数m. 3 假设约定 API 响应所能忍受最长时间为b ms,测试出响应时间为b ms时的并发数 linux下用

高并发下问题随笔

高并发下随笔 随便写写,有什么不对的地方,请多指教. 选NGINX还是APACHE抗并发: 首先常用的架构是LNMP,之前用过LAMP的架构,但发现APACHE在高并发下表现并没有NGINX优异,原因是NGINX是异步非阻塞,APACHE是同步多进程阻塞型,NGINX会占用更少的资源抗并发,可能几千上万个链接依旧使用一个链接,NGINX也很容易组成集群, 给不同配置的服务器分配不同的权重,还包括负载均衡的方式,比如轮询与我们常用的IP_HASH等,所以推荐LNMP的架构. 选择HDD还是SSD硬