您现在的位置: Gufang > 博客

网站性能优化 - 数据库及服务器架构篇[转载

2025/12/19 4:54:45Posted by Gufang

我先前曾写过三篇有关网站系统、ASP.NET 性能优化的文章,分别从 SQL 语句、数据库设计、ASP.NET 功能、IIS 7 的套件,来探讨此一性能议题。本帖算是系列作的第四篇,整理了一些我看过的书籍和文章,改从「负载均衡、服务器架构、数据库扩展」的角度,提出一些性能优化的建议,以供有建设中大型网站需求的网友们作为参考。

小弟我先前写过的三篇帖子:

(一) 30 分钟快快乐乐学 SQL Performance Tuninghttp://www.cnblogs.com/WizardWu/archive/2008/10/27/1320055.html

(二) 网站性能越来越差...

IIS最大并发连接数

2025/12/19 4:51:58Posted by Gufang

最大并发连接数 = 队列长度 + 工作线程数

【工作线程数】

IIS实际可以第一时间处理的请求数。比如,工作线程数 = 100,一万个连接请求同时涌过来,那么只有100个可以被处理,其余9900个进入等待队列等待,或者直接以503错误(服务器不可用)返回。

工作线程可以通过Machine.config的maxWorkerThreads修改

【队列长度】

除了IIS工作线程数可以第一时间进行处理外,其余的请求可以进入等待队列进行等待的数量。比如:

工作线程数 = 100

队列长度 = 5000

那么一万个连接请求同时涌过来,将有1...

深入理解IIS的多线程工作机制

2025/12/19 4:50:45Posted by Gufang

首先让我们来看看IIS里面的这2个数字:最大并发连接数,队列长度。先说这2个数字在哪里看。

最大并发连接数:在IIS中选中一个网站,右键网站名称,在右键菜单中找到并点击【管理网站】->【高级设置】。打开对话框如下图:

 

队列长度:在IIS中选中【应用程序池】,在应用程序池列表中,右键你想查看的,在右键菜单中选择【高级设置】。打开如下对话框:

 

这两个数字表面上看是影响我们站点的并发处理能力的,但是具体是如何影响一个网站的并发处理能力的呢?要完全理解IIS的并发处理能力,除了这2个数字,实际上还有一个非常关键的数字:II...

如何设置IIS程序池的回收时间,才能最大程度

2025/12/19 4:47:56Posted by Gufang

作为.Net开发人员,其实对IIS的应用程序池知之甚少,在工作中我也有几次遇到过网站无故打不开的情况,找了半天原因也找不到是怎么造成的,有一次我给网站换了一个应用程序池后发现就能正常访问了,这也让我对辨别是问题产生了好奇和疑问,于是开始找这方面的一些资料,原来IIS的应用程序池一般默认都会自动回收的,默认有29个小时回收一次,所以很多时候因为不是上班时间我们没有遇到过,那么对于互联网web应用,如何在用户毫无感知的情况下回收程序池?(对用户产生最小的影响)

简单理解IIS应用程序池应用程序池可以看成是装载计算机分配给Web应用程序的内存的容器。

网络上有人这样比喻...

SQL统计每科前三名的学生的语句

2025/12/19 4:44:06Posted by Gufang

偶然在论坛看到一个网友的帖子,关于他遇到一个面试题的,网站写了很多,我看了一下,结果应该是没问题的,但是为何面试官还是不满意,我想面试官可能并不是想考你真能把这道题做出来,而是看你如何简洁的通过一个sql语句就完成,重点我想是面试官想看到"row_number"  "partition"这样的关键字吧

下面说下具体分析做法

有个成绩表 StuScore(StuId,Subject,Score)分别为学号,课程名,成绩。

问题:用语句查询出每科的前三名学生的学号

1.创建测试sql语句

create&n...

IIS应用程序池的查看与配置【转载】

2025/12/19 4:42:21Posted by Gufang

1 查看服务器iis的w3wp.exe对应的应用程序池 在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。今天研究了一下,可以做以下配置:1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。那么,怎么样才能找到是哪一个网站的?1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进...

sql查询当天的数据

2025/12/19 4:37:45Posted by Gufang

今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0

昨天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=1

7天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=7

30天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,g...

此网站无法提供安全连接(客户端和服务器不支持

2025/12/19 4:34:05Posted by Gufang

首先简单说一下我遇到问题的过程,我们公司有一根电信专线,下面有4个固定IP,有一个IP1已经绑定了A域名,且A域名申请过开端80、443端口(提交给客户经理),现在我们使用IP2来绑定另一个新的域名B,此时不需要在申请开端80、443端口了,因为同属一条专线,已经开通过了,在网站搭建好后,绑定了https证书后,发现https只有360能访问,其它浏览器一概报下面这个错误:

通过360浏览器打开的情况,对比了其它网站打开的情况,截图如下,对比看一下:

   

 

 通过对比,可以看到,域名B因为使用的是 TLS 1.0,所...

SQL server把多条记录查找结果合并成

2025/12/19 4:32:24Posted by Gufang

例如我们有如下一张"用户工厂"表,为多对多关系:

select UserId,工厂号 from 用户工厂

 

如果我们希望得到三个工厂号对应了哪些UserId,把这些UserId放到一行里面显示出来,如下图:

 

 可以使用如下sql语句:

  工厂号,人员(  ((),UserId)  用户工厂 b  a.工厂号b.工厂号  xml Path() )&nbs...

SQL提高查询效率【in、not in、be

2025/12/19 4:29:46Posted by Gufang

在使用SQL语句查询数据库记录时,如果要查询相同的内容,有着不同的多种方法。

  仍然,尽管使用多种方法可以得到相同的结果,但是,如果您使用不同的方法,在执行效益上是截然不同的。因此,我们得仔细考虑,如果要查询相同结果,该使用哪种语句,执行效益比较好。

  这就是SQL语句的优化。

  以下优化语句,针对MS Sql数据库。

  1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

  2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用...