网站访问量太大,遇到崩溃怎么办?

标签(空格分隔): nginx 过滤器 监听器


目录.png

背景:一个朋友问到这个问题,自行百度整理大体解决的思路,都是参考大神的文档,目前这里不做深究。

前期相关准备

1.网站的运行环境

一般情况下,使用的是linux+tomcat+jdk+mysql,要是查看具体版本的话,连接linux后进入需要查看的tomcat路径下的bin内,直接输入: sh version.sh

要是其他的搭建方式,我就不太了解了。

2.预估最高访问量

可以参考之前的统计数据进行大体的评估。

针对问题的描述

公司有类似答题竞赛的活动,访问量在一个月时间内,会比较高。

方案一

限制IP访问,针对单机模式

实现方式有很多,我只大体说下两种方式:

  • 1.要是网站代码框架使用的是SSH,或是SpringMVC,可以通过过滤器,或是监听器的方式手动写代码实现,限制某一段时间内同一ip访问数,或是限制并发连接数,这种方式比较繁琐,复杂
  • 2.搭建nginx,进行相应的配置,这种方式较为简单,访问 nginx中如何限制某个IP同一时间段的访问次数 了解详情。

方案二

针对多机模式

经过验证,系统对大用户量使用的响应方面,Apache+3Tomccat集群> Apache+2Tomcat集群> Apache集成Tomcat >单个Tomcat。

于是可以增加多个应用服务器,同时搭建nginx做负载均衡。按照预估最高访问量,进行评估需要搭建几个应用服务器。基本上两个就够用了。

方案三

tomcat应用服务器的并发访问优化

要是应用服务器使用的是tomcat,官方文档指出基本在2000左右,实际测试同一时刻的承受稳定访问量在250左右。

数据来源,参考文档Tomcat能够稳定支持的最大用户并发数

解决方法
参考文档tomcat 高并发配置 与优化

总之:

要是网站搭建在tomcat应用服务器的话,基本按照方案三的解决方案,可以应对大部分场景,同时这种也是最为简单的解决方式,给出如下配置方案:

1.修改tomcat中catalina.sh的配置,在文件开始处加

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true"

2.修改tomcat中server.xml

    <Connector port="80" protocol="HTTP/1.1" 
               maxThreads="600"      
                minSpareThreads="100"
                maxSpareThreads="500"
                acceptCount="700"
                connectionTimeout="20000" 
                redirectPort="8443" />

备注:对于并发量的优化,还要看数据库及程序性能,顺便说一句,不要忘记改os的最大文件句柄数等等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,273评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,419评论 11 349
  • 糖醋里脊
    咪咕吸阅读 451评论 0 1
  • 许多时候,蓝调会让你感觉音乐永远不会停止,或者,你永远不想让音乐停止。。。 布鲁斯,BLUES,一种需要用“身体”...
    言射手阅读 2,195评论 0 11
  • 怎么还是那样没耐心,为生活的一点意外无法释然。还就没有把那些奇怪的想法化成文字了,其实生活很简单,有些东西只要用平...
    腾空的日子阅读 200评论 0 0