小网站架构优化:从100并发抗到4000并发

news/2024/5/9 18:02:17/文章来源:https://blog.csdn.net/weixin_34262482/article/details/90620269
前言:
复制代码
很久前,在512M内存+Access的VPS里,写过了一个经典的秋色园技术原理解析系列。
后来的某一天,换上了1G内存+MSSQL2000,秋色园又跑过了一个多年头。
之后,秋色园和 CYQ.Data,也在一直默默的优化和改进,只是没写什么文章分享分享。
秋色园的架构,基本上从简单到复杂最后又回归简单,不断做着减法,去掉了好多以前用于减轻负载的算法,包括AOP+SQLite分压和文本分压等机制,还有一些缓存式算法。
好多时候,硬件不给力,这时候就会被逼着把整个系统架构复杂化。
一当硬件给力时,系统轻装上阵,架构可以更简单。
因为本质就是请求+返回(硬件能加速的,软件就不用搞太多算法了)。
复制代码

下面在分享一下我记忆中还记得的秋色园关于负载测试的起缘:

 

1:某天,我发现秋色园CPU经常会跑满100%:
复制代码
经过一年的岁月,不知觉的最终被我发现是搜索引擎引发的(虽然写过IIS日志分析工具,但是我自己都很少用,几乎没怎么用,一用没想到找到问题了)。

我发现秋色园的关键字(Tag),由于是直接链接到搜索,而搜索这块是全表的like搜索,没做缓存的优化,所以搜索引擎心情好时就把它弄挂菜了。
复制代码

2:某天,某人用几百个并发,把秋色园又搞到CPU百分百了:

复制代码
我很疑惑,秋色园几乎都是半静态+缓存,除了队列缓存式更新访问计数,和除了后台,不可能顶这点并发就挂了。

通过查看IIS日志,我从日志里发现,是由于URL引发的:
由于秋色园是根据URL缓存的,对方的并发通过在URL后面补充一些随机参数,导致每次请求的URL都不一样,结果系统每次会重新读取并生成Html,导致CPU飘起来。
解决方法就是重整所有的URL链接和对应的缓存机制了。
复制代码

3:某天,我也玩起了负载工具,自己时不时的把秋色园弄到CPU百分百.

 

下面分享下,在负载推力下,对秋色园后续折腾的几个优化方案:

 

经过不断的负载测试,秋色园顺路把一些常见的优化手段也用上了:

 

1:分离静态资源域名:static.cyqdata.com
复制代码
架构处理过程:

1:把模板加载和图片处理的,都给处理到另一个域名。
2:新开一个网站,绑定static.cyqdata.com域名,位置仍指向原来的位置。
3:由于是静态站点,可以关掉和.net无关的所有东西。
这样变化后,图片的负载就是天与地的变化:
如果没有分离出来,仍经过.net解析后再返回图片,测试1-2千个并发CPU就近满了。
经过分离,关掉和.net相关的资源后,跑了5000以上并发,CPU和内存也没怎么动静。
主要自己三台机最多只上到这5K左右的并发数,不能往上再测试,但是差距已经很明显了。
复制代码

2:Http 304:这是客户端缓存的应用:

除了服务器缓存,客户端缓存也是另一个重点,除了一些静态数据处理缓存,动态数据也适时用上304。

如:秋色园上有一些动态的文件“下载次数”:

一般的程序,文件下载都是和文章内容分开的,单独提供下载。

如上,我需要在文章内容里提供下载,又要考虑下载次数机制,用上了图片机制,通过动态一个请求返回了图片资源。
由于下次数次实时性不强,而且变化少,通过来点手段,也可以304缓存。

3:关掉不常用的Modules:

复制代码
如果你重写过URL,或看过秋色园技术原理解析关于URL重写这块文章,下面代码应该会熟悉:

通过调试,看下图:秋色园的Modules只剩下3个,那时因为其它的没用的都关掉了。
本来Session模块也是要关掉,突然发现OAuth2里用到了,就保留了。
看下图还会发现一段注释的for语句,是打印出默认系统带的十几个Moudules。
复制代码
关掉也很简单,web.config配置:
复制代码
<httpModules>
<add name="UrlRewrite" type="Web.UrlRewrite.UrlRewrite,Web.UrlRewrite" />
<remove name="OutputCache" />
<!--<remove name="Session"/>-->
<remove name="WindowsAuthentication" />
<remove name="FormsAuthentication" />
<remove name="PassportAuthentication" />
<remove name="RoleManager" />
<remove name="UrlAuthorization" />
<remove name="FileAuthorization" />
<remove name="AnonymousIdentification" />
<remove name="Profile" />
<remove name="ErrorHandlerModule" />
<remove name="ServiceModel" />
<!--<remove name="UrlRewrite"/>-->
<!--<remove name="DefaultAuthentication"/>-->
</httpModules>
复制代码

4:尽早关闭数据库链接:

以前喜欢这样写代码:
复制代码
using (MAction action = new MAction(U_QBlogFileEnum.Blog_File))
{
action.SetSelectColumns(Files.ID, Files.Hits, Files.FilePath);
if (action.Fill(id))
{
Document.Load(action.Data);
。。获取数据库数据处理一些业务逻辑显示到界面。 
}
}
复制代码
这种坏习惯,导致数据库链接会根据业务的时间延长了关闭链接,导致并发性能下降,平时看不出来。
改进:
复制代码
MDataRow row;
using (MAction action = new MAction(U_QBlogFileEnum.Blog_File))
{
action.SetSelectColumns(Files.ID, Files.Hits, Files.FilePath);
if (action.Fill(id))
{
row=action.Data;
}
}
if(row!=null)
{
Document.Load(action.Data);
。。获取数据库数据处理一些业务逻辑显示到界面。
}
复制代码
把逻辑放到外面,提前关闭链接后再去处理事情,并发时性能会提升不少。

 

5:Web园的抗并发能力:
复制代码
基于不断的优化改进,秋色园从100个并发挂菜-》基本优化-》到1000个并发挂菜-》经过架构调整优化-》抗到2000个并发左右。

最后,还有一个招,就是IIS的Web园,通过允许的设置了2个进程,发现能抗到4000并发,虽然CPU接近100%,但仍能正常访问,可见Web园的确是个奇招。
开启Web园,意味着多进程负载,当然Session默认的模式就不能用了。
复制代码
如上所说,同样的硬件配置:从100个并发,到4000个并发,改动并不多,路也并不长,但是常人又知多少。
以上的服务器环境,都是美国VPS 10M带宽CPU双核,配置如下:

6:如何对网站进行负载测试:

分布式网站负载压力测试工具:点击下载

后话:

硬件能顶半边天:一台好的服务器,程序写的烂一点,不做任何优化,也能跑的潇潇洒洒。

软件能顶半边天:好的优化机制和架构,穷的服务器也能跑个安安稳稳。
现实时,只有超过了那半边天,你才会去想另一半的重要性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_820704.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【系统架构】大型网站架构系列:缓存在分布式系统中的应用(二)

原文地址 缓存是分布式系统中的重要组件&#xff0c;主要解决高并发&#xff0c;大数据场景下&#xff0c;热点数据访问的性能问题。提供高性能的数据快速访问。 本文是缓存在分布式应用第二篇文章&#xff0c;介绍分布式缓存&#xff0c;Memcache&#xff0c;Redis&#xff0c…

python 抓取小说网站,制作电子书。

分析目的&#xff08;或者说要达到的效果&#xff09; 实现一个小说下载器&#xff0c;输入小说的名字然后抓取小说的全部章节&#xff0c;制作成文档。 需要的知识&#xff1a;使用BeautifulSoup或正则解析网页&#xff0c;使用requests下载网页。 搜索小说 直接用小说的站内搜…

【转】最实用的IT类网站及工具大集合

转自&#xff1a;http://www.cnblogs.com/annie00/p/5753507.html 1.聚合数据 大家在开发过程中&#xff0c;可能会用到各种各样的数据&#xff0c;想找一些接口来提供一些数据。比如天气预报查询&#xff0c;火车时刻表查询&#xff0c;彩票查询&#xff0c;身份证查询等等。有…

大型网站架构演变和知识体系

from http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什…

关于动画培养灵感的网站

直接点解图片就能进入对应的国外的网站&#xff1a; 下面这个网站是视频播放的哦&#xff0c;挺好看的。 当然这个英文网站在国内也有翻译的blog&#xff1a;http://www.jianshu.com/p/1858a8733ba3

大型网站技术架构 大纲

本文内容大部分来自《大型网站技术架构》,这本书很值得一看&#xff0c;强烈推荐。网站系统架构层次如下图所示&#xff1a;1.前端架构前端指用户请求到达网站应用服务器之前经历的环节&#xff0c;通常不包含网站业务逻辑&#xff0c;不处理动态内容。浏览器优化技术并不是优化…

knewone最新分享购物网站模板

演示效果&#xff1a;http://www.erdangjiade.com/templates/390 效果图片&#xff1a;

DTCMS 网站管理系统

dtcms适合开发一些简单小型网站 开发的过程中遇见了各种问题&#xff0c;下面总结下我遇见的问题 1.遇见提示未开启生成静态功能 在系统设置里面将“伪URL重写”为“生成静态”可以解决 2.在生成静态页面的时候提示生成页面完成&#xff0c;但是右下角却显示失败 这个可能是在新…

oracle em 此网站,Oracle 11g em启动报此网站的安全证书有问题的解决方案

今天配置完Oracle 11gR2 em后&#xff0c;在IE中输入https://kermart:1158/em直接报错&#xff0c;打不开提示&#xff1a;“证书错误&#xff0c;此网站安全证书有问题”&#xff0c;在网上找了好久没有找到解决的方案&#xff0c;其中有人说要卸载win7的windows补丁3KKB26612…

商城模板网站html5手机端_网站建设商城模板设计排版不同,但不可缺少的重要板块都会有 - 企业建站...

有的企业建网站&#xff0c;是为了宣传产品、树立企业形象&#xff0c;此类多为建设企业官方网站&#xff1b;有的企业建网站&#xff0c;销售产品是根本&#xff0c;此类都建设商城网站。建设网站又有两种方法&#xff0c;一类模板建站&#xff0c;一类定制建站。对于网站建设…

list的contains方法为什么不好使_为什么你的网站优化效果不好?

当新手网站管理员优化他们的网站&#xff0c;他们不能总是产生良好的结果。是他们的优化方法使用不好&#xff0c;还是网站本身有问题&#xff0c;比如苏州网站优化&#xff0c;哪里有困难&#xff0c;为什么经常做不好&#xff0c;长期没有排名的网站&#xff0c;优化效果不好…

做网站用什么语言_外贸独立站卖家如何做多语言网站SEO?

在各国经济文化交流的频繁和跨境业务数量增长的背景下&#xff0c;想要实现海外营销&#xff0c;获得更多的关注和收益&#xff0c;外贸卖家们就必须针对目标市场进行网站的多语言优化&#xff0c;针对新的国家或地区进行策略的制定网站内容本地化&#xff0c;仅翻译网站内的文…

如何集成varnish到已有的网站架构

如何集成varnish到已有的网站架构 在我们现有的架构中通常是已经成熟稳定的架构&#xff0c;如何将高性能的缓存服务器部署在已有的环境上呢&#xff0c;同时部署容易&#xff0c;如何始终让用户看到的是最新的内容&#xff0c;即便是缓存命中的状态&#xff1f; 因此&#xff…

activemq 各种版本区别_响应式网站和PC+手机端网站有什么区别?

企业建站普遍会遇到这样一个选择难题&#xff1a;网站选择什么类型&#xff1f;常见的类型分为3种&#xff1a;PC端&#xff0c;PC手机端&#xff0c;响应式。PC端大家都知道&#xff0c;主要的选择难点是后两种有什区别。今天小编就帮大家来分析一下响应式网站和PC手机端网站的…

阿根廷最大社交网站Taringa遭遇大规模数据泄漏,超过2800万用户数据暴露

本文讲的是阿根廷最大社交网站Taringa遭遇大规模数据泄漏&#xff0c;超过2800万用户数据暴露&#xff0c;如果你有Taringa&#xff08;也被称为“拉丁美洲的Reddit”&#xff09;网站账号&#xff0c;那么请注意&#xff0c;你的账户详细信息可能已经在大规模数据泄漏事件中泄…

实现网站验证码切换功能

实现网站验证码切换功能 一、样例 样例1、 样例2、 二、实现原理 三、实现代码 com.fry.servlet.VerifyCodeServlet 1 package com.fry.servlet;2 3 import javax.imageio.ImageIO;4 import javax.servlet.ServletException;5 import javax.servlet.annotation.WebServlet;6 im…

从零开始编写自己的C#框架(25)——网站部署

导航 1、关掉访问保护 2、发布网站 3、复制网站到服务器 4、添加新网站 5、设置网站访问权限 6、设置文件夹访问权限 7、控制可更新文件夹执行权限 8、设置“应用程序池”.net版本与模式 9、附加数据库 10、添加数据库访问用户 11、设置数据库链接 12、部署注意事项 对于网站的…

linux系统怎么重启网络连接wifi密码,怎么查看linux连接wifi的密码?_网站服务器运行维护,linux,wifi...

如何使用外部硬盘安装linux系统&#xff1f;_网站服务器运行维护使用外部硬盘安装linux系统的方法&#xff1a;首先将格式化的U盘和固态硬盘连接到电脑上并按F9&#xff1b;然后从菜单选择U盘启动并按enter&#xff1b;接着按linux minit程序安装系统并选择中文&#xff1b;最后…

织梦网站调用变量失败_浙江栢塑科技解析织梦被挂马被黑解决流程

织梦被黑恶意挂马并不奇怪&#xff0c;本身织梦程序案例漏洞过多&#xff0c;如不做好安全更新或备份&#xff0c;造成数据丢失并影响排名。 一个SEOVIP同学遇到织梦的问题&#xff0c;接下来把处理的流程记录下来&#xff0c;帮助大家解决问题。 1&#xff0c;分析网站源码&am…

3格式是什么意思_推荐一个万能格式转换网站

老Y在以前的文章中推荐过一个专注格式转换的网站→推荐一个万能的在线格式转换网站&#xff0c;功能非常的强大。也推荐过一个PC端的转换神器→办公利器&#xff08;PDF工具|格式转换|图片编辑|文字识别|图片处理…&#xff09;今天老Y再推荐一个国内的功能同样强大的格式转换网…