当前位置:文档之家› C#常用性能优化方法

C#常用性能优化方法

C#常用性能优化方法
C#常用性能优化方法

1.数据库访问性能优化

数据库的连接和关闭

访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。https://www.doczj.com/doc/92778817.html,中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。

使用存储过程

存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。另外,存储过程在服务器端运行,独立于https://www.doczj.com/doc/92778817.html,程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。

优化查询语句

https://www.doczj.com/doc/92778817.html,中ADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此,尽量使用优化过的SQL语句以减少执行时间。比如,不在查询语句中包含子查询语句,充分利用索引等。

2.字符串操作性能优化

使用值类型的ToString方法

在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。

运用StringBuilder类

String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。在处理字符串时,最好使用StringBuilder类,其.NET命名空间是

System.Text。该类并非创建新的对象,而是通过Append,Remove,Insert等方法直接对字符串进行操作,通过ToString方法返回操作结果。其定义及操作语句如下所示:

int num;

System.Text.StringBuilder str=new System.Text.StringBuilder();//创建字符串str.Append(num.ToString());//添加数值num

Response.Write(str.ToString);//显示操作结果

3.优化Web服务器计算机和特定应用程序的配置文件以符合您的特定需要

默认情况下,https://www.doczj.com/doc/92778817.html,配置被设置成启用最广泛的功能并尽量适应最常见的方

案。因此,应用程序开发人员可以根据应用程序所使用的功能,优化和更改其中的某些配置,以提高应用程序的性能。下面的列表是您应该考虑的一些选项。

仅对需要的应用程序启用身份验证。

默认情况下,身份验证模式为Windows,或集成NTLM。大多数情况下,对于需要身份验证的应用程序,最好在Machine.config文件中禁用身份验证,并在Web.config文件中启用身份验证。根据适当的请求和响应编码设置来配置应用程序。https://www.doczj.com/doc/92778817.html,默认编码格式为UTF-8。如果您的应用程序为严格的ASCII,请配置应用程序使用ASCII以获得稍许的性能提高。

考虑对应用程序禁用AutoEventWireup。

在Machine.config文件中将AutoEventWireup属性设置为false,意味着页面不将方法名与事件进行匹配和将两者挂钩(例如Page_Load)。如果页面开发人员要使用这些事件,需要在基类中重写这些方法(例如,需要为页面加载事件重写Page.OnLoad,而不是使用Page_Load方法)。如果禁用

AutoEventWireup,页面将通过将事件连接留给页面作者而不是自动执行它,获得稍许的性能提升。

从请求处理管线中移除不用的模块。

默认情况下,服务器计算机的Machine.config文件中节点的所有功能均保留为激活。根据应用程序所使用的功能,您可以从请求管线中移除不用的模块以获得稍许的性能提升。检查每个模块及其功能,并按您的需要自定义它。例如,如果您在应用程序中不使用会话状态和输出缓存,则可以从列表中移除它们,以便请求在不执行其他有意义的处理时,不必执行每个模块的进入和离开代码。

4.一定要禁用调试模式

在部署生产应用程序或进行任何性能测量之前,始终记住禁用调试模式。如果启用了调试模式,应用程序的性能可能受到非常大的影响。

5.对于广泛依赖外部资源的应用程序,请考虑在多处理器计算机上启用网络园

https://www.doczj.com/doc/92778817.html,进程模型帮助启用多处理器计算机上的可缩放性,将工作分发给多个进程(每个CPU一个),并且每个进程都将处理器关系设置为其CPU。此技术称为网络园艺。如果应用程序使用较慢的数据库服务器或调用具有外部依赖项的COM对象(这里只是提及两种可能性),则为您的应用程序启用网络园艺是有益的。但是,在决定启用网络园艺之前,您应该测试应用程序在网络园中的执行情况。

6.只要可能,就缓存数据和页输出

https://www.doczj.com/doc/92778817.html,提供了一些简单的机制,它们会在不需要为每个页请求动态计算页输出或数据时缓存这些页输出或数据。另外,通过设计要进行缓存的页和数据请求(特别是在站点中预期将有较大通讯量的区域),可以优化这些页的性能。与.NET Framework的任何Web窗体功能相比,适当地使用缓存可以更好的提高站点的性能,有时这种提高是超数量级的。使用https://www.doczj.com/doc/92778817.html,缓存机制有两点需要注意。首先,不要缓存太多项。缓存每个项均有开销,特别是在内存使用方面。不要缓存容易重新计算和很少使用的项。其次,给缓存的项分配的有效期不要太短。

很快到期的项会导致缓存中不必要的周转,并且经常导致更多的代码清除和垃圾回收工作。若关心此问题,请监视与https://www.doczj.com/doc/92778817.html, Applications性能对象关联的Cache Total Turnover Rate性能计数器。高周转率可能说明存在问题,特别是当项在到期前被移除时。这也称作内存压力。

7.选择适合页面或应用程序的数据查看机制

根据您选择在Web窗体页显示数据的方式,在便利和性能之间常常存在着重要的权衡。例如,DataGrid Web服务器控件可能是一种显示数据的方便快捷的方法,但就性能而言它的开销常常是最大的。在某些简单的情况下,您通过生成适当的HTML自己呈现数据可能很有效,但是自定义和浏览器定向会很快抵销所获得的额外功效。Repeater Web服务器控件是便利和性能的折衷。它高效、可自定义且可编程。

8.将SqlDataReader类用于快速只进数据游标

SqlDataReader类提供了一种读取从SQL Server数据库检索的只进数据流的方法。如果当创建https://www.doczj.com/doc/92778817.html,应用程序时出现允许您使用它的情况,则

SqlDataReader类提供比DataSet类更高的性能。情况之所以这样,是因为SqlDataReader使用SQL Server的本机网络数据传输格式从数据库连接直接读取数据。另外,SqlDataReader类实现IEnumerable接口,该接口也允许您将数据绑定到服务器控件。有关更多信息,请参见SqlDataReader类。有关https://www.doczj.com/doc/92778817.html,如何访问数据的信息,请参见通过https://www.doczj.com/doc/92778817.html,访问数据。

9.将SQL Server存储过程用于数据访问

在.NET Framework提供的所有数据访问方法中,基于SQL Server的数据访问是生成高性能、可缩放Web应用程序的推荐选择。使用托管SQL Server提供程序时,可通过使用编译的存储过程而不是特殊查询获得额外的性能提高。10.避免单线程单元(STA)COM组件

默认情况下,https://www.doczj.com/doc/92778817.html,不允许任何STA COM组件在页面内运行。若要运行它们,必须在.aspx文件内将ASPCompat=true属性包含在@Page指令中。这样就将执行用的线程池切换到STA线程池,而且使HttpContext和其他内置对象可用于COM对象。前者也是一种性能优化,因为它避免了将多线程单元(MTA)封送到STA线程的任何调用。使用STA COM组件可能大大损害性能,应尽量避免。若必须使用STA COM组件,如在任何interop方案中,则应在执行期间进行大量调用并在每次调用期间发送尽可能多的信息。另外,小心不要在构造页面期间创建任何STA COM组件。例如下面的代码中,在页面构造时将实例化由某个线程创建的MySTAComponent,而该线程并不是将运行页面的STA线程。这可能对性能有不利影响,因为要构造页面就必须完成MTA和STA线程之间的封送处理。

<%@Page Language="VB"ASPCompat="true"%>

<%

Response.Write(myComp.SayHello)

%>

首选机制是推迟对象的创建,直到以后在STA线程下执行上述代码,如下面的例子所示。

<%@Page Language="VB"ASPCompat="true"%>

<%

Response.Write(myComp.SayHello)

%>

推荐的做法是在需要时或者在Page_Load方法中构造任何COM组件和外部资源。永远不要将任何STA COM组件存储在可以由构造它的线程以外的其他线程访问的共享资源里。这类资源包括像缓存和会话状态这样的资源。即使STA 线程调用STA COM组件,也只有构造此STA COM组件的线程能够实际为该调用服务,而这要求封送处理对创建者线程的调用。此封送处理可能产生重大的性能损失和可伸缩性问题。在这种情况下,请研究一下使COM组件成为MTA COM组件的可能性,或者更好的办法是迁移代码以使对象成为托管对象。11.将调用密集型的COM组件迁移到托管代码

.NET Framework提供了一个简单的方法与传统的COM组件进行交互。其优点是可以在保留现有投资的同时利用新的平台。但是在某些情况下,保留旧组件的性能开销使得将组件迁移到托管代码是值得的。每一情况都是不一样的,决定是否需要迁移组件的最好方法是对Web站点运行性能测量。建议您研究一下如何将需要大量调用以进行交互的任何COM组件迁移到托管代码。许多情况下不可能将旧式组件迁移到托管代码,特别是在最初迁移Web应用程序时。在这种情况下,最大的性能障碍之一是将数据从非托管环境封送到托管环境。因此,在交互操作中,请在任何一端执行尽可能多的任务,然后进行一个大调用而不是一系列小调用。例如,公共语言运行库中的所有字符串都是Unicode的,所以应在调用托管代码之前将组件中的所有字符串转换成Unicode格式。另外,一处理完任何COM对象或本机资源就释放它们。这样,其他请求就能够使用它们,并且最大限度地减少了因稍后请求垃圾回收器释放它们所引起的性能问题。12.在Visual https://www.doczj.com/doc/92778817.html,或JScript.代码中使用早期绑定

以往,开发人员喜欢使用Visual Basic、VBScript.和JScript.的原因之一就是它们所谓“无类型”的性质。变量不需要显式类型声明,并能够简单地通过使用来创建它们。当从一个类型到另一个类型进行分配时,转换将自动执行。不过,这种便利会大大损害应用程序的性能。Visual Basic现在通过使用Option Strict 编译器指令来支持类型安全编程。为了向后兼容,默认情况下,https://www.doczj.com/doc/92778817.html,不启用该选项。但是,为了得到最佳性能,强烈建议在页中启用该选项。若要启用

Option Strict,请将Strict属性包括在@Page指令中,或者,对于用户控件,请将该属性包括在@Control指令中。下面的示例演示了如何设置该属性,并进行了四个变量调用以显示使用该属性是如何导致编译器错误的。

<%@Page Language="VB"Strict="true"%>

<%

Dim B

Dim C As String

'This will cause a compiler error.

A="Hello"

'This will cause a compiler error.

B="World"

'This will not cause a compiler error.

C="!!!!!!"

'But this will cause a compiler error.

C=0

%>Dim B

Dim C As String

'This will cause a compiler error.

A="Hello"

'This will cause a compiler error.

B="World"

'This will not cause a compiler error.

C="!!!!!!"

'But this will cause a compiler error.

C=0

%>

https://www.doczj.com/doc/92778817.html,也支持无类型编程,但它不提供强制早期绑定的编译器指令。若发生下面任何一种情况,则变量是晚期绑定的:被显式声明为Object,是无类型声明的类的字段,是无显式类型声明的专用函数或方法成员,并且无法从其使用推断出类型。最后一个差别比较复杂,因为如果https://www.doczj.com/doc/92778817.html,编译器可以根据变量的使用情况推断出类型,它就会进行优化。在下面的示例中,变量A是早期绑定的,但变量B是晚期绑定的。

var A;

var B;

A="Hello";

B="World";

B=0;

为了获得最佳的性能,当声明https://www.doczj.com/doc/92778817.html,变量时,请为其分配一个类型。例如,var A:String。

13.使请求管线内的所有模块尽可能高效

请求管线内的所有模块在每次请求中都有机会被运行。因此,当请求进入和离开模块时快速地触发代码至关重要,特别是在不使用模块功能的代码路径里。分别在使用及不使用模块和配置文件时执行吞吐量测试,对确定这些方法的执行速度非常有用。

14.使用HttpServerUtility.Transfer方法在同一应用程序的页面间重定向

采用Server.Transfer语法,在页面中使用该方法可避免不必要的客户端重定向。

15.必要时调整应用程序每个辅助进程的线程数

https://www.doczj.com/doc/92778817.html,的请求结构试图在执行请求的线程数和可用资源之间达到一种平衡。

已知一个使用足够CPU功率的应用程序,该结构将根据可用于请求的CPU 功率,来决定允许同时执行的请求数。这项技术称作线程门控。但是在某些条件下,线程门控算法不是很有效。通过使用与https://www.doczj.com/doc/92778817.html, Applications性能对象关联的Pipeline Instance Count性能计数器,可以在PerfMon中监视线程门控。

当页面调用外部资源,如数据库访问或XML Web services请求时,页面请求通常停止并释放CPU。如果某个请求正在等待被处理,并且线程池中有一个线程是自由的,那么这个正在等待的请求将开始被处理。遗憾的是,有时这可能导致Web服务器上存在大量同时处理的请求和许多正在等待的线程,而它们对服务器性能有不利影响。通常,如果门控因子是外部资源的响应时间,则让过多请求等待资源,对Web服务器的吞吐量并无帮助。为缓和这种情况,可以通过更改Machine.config配置文件节点的maxWorkerThreads和maxIOThreads 属性,手动设置进程中的线程数限制。

注意:辅助线程是用来处理https://www.doczj.com/doc/92778817.html,请求的,而IO线程则是用于为来自文件、数据库或XML Web services的数据提供服务的。分配给这些属性的值是进程中每个CPU每类线程的最大数目。对于双处理器计算机,最大数是设置值的两倍。对于四处理器计算机,最大值是设置值的四倍。无论如何,对于有四个或八个CPU的计算机,最好更改默认值。对于有一个或两个处理器的计算机,默认值就可以,但对于有更多处理器的计算机的性能,进程中有一百或两百个线程则弊大于利。注意进程中有太多线程往往会降低服务器的速度,因为额外的上下文交换导致操作系统将CPU周期花在维护线程而不是处理请求上。16.适当地使用公共语言运行库的垃圾回收器和自动内存管理

小心不要给每个请求分配过多内存,因为这样垃圾回收器将必须更频繁地进行更多的工作。另外,不要让不必要的指针指向对象,因为它们将使对象保持活动状态,并且应尽量避免含Finalize方法的对象,因为它们在后面会导致更多的工作。特别是在Finalize调用中永远不要释放资源,因为资源在被垃圾回收器回收之前可能一直消耗着内存。最后这个问题经常会对Web服务器环境的性能造成毁灭性的打击,因为在等待Finalize运行时,很容易耗尽某个特定的资源。

17.如果有大型Web应用程序,可考虑执行预批编译

每当发生对目录的第一次请求时都会执行批编译。如果目录中的页面没有被分析并编译,此功能会成批分析并编译目录中的所有页面,以便更好地利用磁盘和内存。如果这需要很长时间,则将快速分析并编译单个页面,以便请求能被处理。

此功能带给https://www.doczj.com/doc/92778817.html,性能上的好处,因为它将许多页面编译为单个程序集。

从已加载的程序集访问一页比每页加载新的程序集要快。批编译的缺点在于:如果服务器接收到许多对尚未编译的页面的请求,那么当Web服务器分析并编译

它们时,性能可能较差。为解决这个问题,可以执行预批编译。为此,只需在应用程序激活之前向它请求一个页面,无论哪页均可。然后,当用户首次访问您的站点时,页面及其程序集将已被编译。没有简单的机制可以知道批编译何时发生。

需一直等到CPU空闲或者没有更多的编译器进程(例如csc.exe(C#编译器)或vbc.exe(Visual Basic编译器))启动。还应尽量避免更改应用程序的bin目录中的程序集。更改页面会导致重新分析和编译该页,而替换bin目录中的程序集则会导致完全重新批编译该目录。在包含许多页面的大规模站点上,更好的办法可能是根据计划替换页面或程序集的频繁程度来设计不同的目录结构。不常更改的页面可以存储在同一目录中并在特定的时间进行预批编译。经常更改的页面应在它们自己的目录中(每个目录最多几百页)以便快速编译。Web应用程序可以包含许多子目录。批编译发生在目录级,而不是应用程序级。

18.不要依赖代码中的异常

因为异常大大地降低性能,所以您不应该将它们用作控制正常程序流程的方式。

如果有可能检测到代码中可能导致异常的状态,请执行这种操作。不要在处理该状态之前捕获异常本身。常见的方案包括:检查null,分配给将分析为数字值的String一个值,或在应用数学运算前检查特定值。下面的示例演示可能导致异常的代码以及测试是否存在某种状态的代码。两者产生相同的结果。

try

{

result=100/num;

}

catch(Exception e)

{

result=0;

}

//...to this.

if(num!=0)

result=100/num;

else

result=0;

19.使用HttpResponse.Write方法进行字符串串联

该方法提供非常有效的缓冲和连接服务。但是,如果您正在执行广泛的连接,请使用多个Response.Write调用。下面示例中显示的技术比用对

Response.Write方法的单个调用连接字符串更快。

Response.Write("a");

Response.Write(myString);

Response.Write("b");

Response.Write(myObj.ToString());

Response.Write("c");

Response.Write(myString2);

Response.Write("d");

20.除非有特殊的原因要关闭缓冲,否则使其保持打开

禁用Web窗体页的缓冲会导致大量的性能开销。

21.只在必要时保存服务器控件视图状态

自动视图状态管理是服务器控件的功能,该功能使服务器控件可以在往返过程上重新填充它们的属性值(您不需要编写任何代码)。但是,因为服务器控件的视图状态在隐藏的窗体字段中往返于服务器,所以该功能确实会对性能产生影响。您应该知道在哪些情况下视图状态会有所帮助,在哪些情况下它影响页的性能。例如,如果您将服务器控件绑定到每个往返过程上的数据,则将用从数据绑定操作获得的新值替换保存的视图状态。在这种情况下,禁用视图状态可以节省处理时间。默认情况下,为所有服务器控件启用视图状态。若要禁用视图状态,请将控件的EnableViewState属性设置为false,如下面的DataGrid服务器控件示例所示。

您还可以使用@Page指令禁用整个页的视图状态。当您不从页回发到服务器时,这将十分有用:

<%@Page EnableViewState="false"%>

注意:@Control指令中也支持EnableViewState属性,该指令允许您控制是否为用户控件启用视图状态。若要分析页上服务器控件使用的视图状态的数量,请(通过将trace="true"属性包括在@Page指令中)启用该页的跟踪并查看

Control Hierarchy表的Viewstate列。有关跟踪和如何启用它的信息,请参见https://www.doczj.com/doc/92778817.html,跟踪。

22.避免到服务器的不必要的往返过程

虽然您很可能希望尽量多地使用Web窗体页框架的那些节省时间和代码的功能,但在某些情况下却不宜使用https://www.doczj.com/doc/92778817.html,服务器控件和回发事件处理。通常,只有在检索或存储数据时,您才需要启动到服务器的往返过程。多数数据操作可在这些往返过程间的客户端上进行。例如,从HTML窗体验证用户输入经常可在数据提交到服务器之前在客户端进行。通常,如果不需要将信息传递到服务器以将其存储在数据库中,那么您不应该编写导致往返过程的代码。如果您开发自定义服务器控件,请考虑让它们为支持ECMAScript.的浏览器呈现客户端代码。通过以这种方式使用服务器控件,您可以显著地减少信息被不必要的发送到Web服务器的次数。

使用Page.IsPostBack避免对往返过程执行不必要的处理

如果您编写处理服务器控件回发处理的代码,有时可能需要在首次请求页时执行其他代码,而不是当用户发送包含在该页中的HTML窗体时执行的代码。根据该页是否是响应服务器控件事件生成的。

使用Page.IsPostBack属性有条件地执行代码

例如,下面的代码演示如何创建数据库连接和命令,该命令在首次请求该页时将数据绑定到DataGrid服务器控件。

void Page_Load(Object sender,EventArgs e)

{

//Set up a connection and command here.

if(!Page.IsPostBack)

{

String query="select*from Authors where FirstName like'%JUSTIN%'";

myCommand.Fill(ds,"Authors");

myDataGrid.DataBind();

}

}

由于每次请求时都执行Page_Load事件,上述代码检查IsPostBack属性是否设置为false。如果是,则执行代码。如果该属性设置为true,则不执行代码。

注意如果不运行这种检查,回发页的行为将不更改。Page_Load事件的代码在执行服务器控件事件之前执行,但只有服务器控件事件的结果才可能在输出页上呈现。如果不运行该检查,仍将为Page_Load事件和该页上的任何服务器控件事件执行处理。

23.当不使用会话状态时禁用它

并不是所有的应用程序或页都需要针对于具体用户的会话状态,您应该对任何不需要会话状态的应用程序或页禁用会话状态。若要禁用页的会话状态,请将@ Page指令中的EnableSessionState属性设置为false。例如:

<%@Page EnableSessi%>

注意:如果页需要访问会话变量,但不打算创建或修改它们,则将@Page指令中的EnableSessionState属性设置为ReadOnly。还可以禁用XML Web

services方法的会话状态。有关更多信息,请参见使用https://www.doczj.com/doc/92778817.html,和XML Web services客户端创建的XML Web services。若要禁用应用程序的会话状态,请在应用程序Web.config文件的sessionstate配置节中将mode属性设置为off。例如:

24.仔细选择会话状态提供程序

https://www.doczj.com/doc/92778817.html,为存储应用程序的会话数据提供了三种不同的方法:进程内会话状态、作为Windows服务的进程外会话状态和SQL Server数据库中的进程外会话状态。每种方法都有自己的优点,但进程内会话状态是迄今为止速度最快的解决方案。如果只在会话状态中存储少量易失数据,则建议您使用进程内提供程序。进程外解决方案主要用于跨多个处理器或多个计算机缩放应用程序,或者用于服务器或进程重新启动时不能丢失数据的情况。有关更多信息,请参见

https://www.doczj.com/doc/92778817.html,状态管理。

25.不使用不必要的Server Control

https://www.doczj.com/doc/92778817.html,中,大量的服务器端控件方便了程序开发,但也可能带来性能的损失,因为用户每操作一次服务器端控件,就产生一次与服务器端的往返过程。因此,非必要,应当少使用Server Control。

https://www.doczj.com/doc/92778817.html,应用程序性能测试

在对https://www.doczj.com/doc/92778817.html,应用程序进行性能测试之前,应确保应用程序没有错误,而且功能正确。具体的性能测试可以采用以下工具进行:Web Application Strees Tool (WAS)是Microsoft发布的一个免费测试工具,可以从

https://www.doczj.com/doc/92778817.html,/上下载。它可以模拟成百上千个用户同时对web应用程序进行访问请求,在服务器上形成流量负载,从而达到测试的目的,可以生成平均TTFB、平均TTLB等性能汇总报告。Application Center Test

(ACT)是一个测试工具,附带于Visual https://www.doczj.com/doc/92778817.html,的企业版中,是Microsoft 正式支持的web应用程序测试工具。它能够直观地生成图表结果,功能比WAS 多,但不具备多个客户机同时测试的能力。服务器操作系统"管理工具"中的"性能"计数器,可以对服务器进行监测以了解应用程序性能。

结论:

对于网站开发人员来说,在编写https://www.doczj.com/doc/92778817.html,应用程序时注意性能问题,养成良好的习惯,提高应用程序性能,至少可以推迟必需的硬件升级,降低网站的成本。

web性能优化(服务器优化)

Web网站性能优化的相关技术 来源:站长网 https://www.doczj.com/doc/92778817.html, 2011-03-04 06:50:47 Web站点性能问题吸引或者迫使越来越多的人投入到这个问题的研究中来,产生了很多解决方案。下面是我根据自身的理解对这些技术进行了归类总结,如有不足之处欢迎拍砖。 一、提高服务器并发处理能力 我们总是希望一台服务器在单位时间内能处理的请求越多越好,这也成了web 服务器的能力高低的关键所在。服务器之所以可以同时处理多个请求,在于操作系统通过多执行流体系设计,使得多个任务可以轮流使用系统资源,这些资源包括CPU、内存以及I/O等。这就需要选择一个合适的并发策略来合理利用这些资源,从而提高服务器的并发处理能力。这些并发策略更多的应用在apache、nginx、lighttpd等底层web server软件中。 二、Web组件分离 这里所说的web组件是指web服务器提供的所有基于URL访问的资源,包括动态内容,静态网页,图片,样式表,脚本,视频等等。这些资源在文件大小,文件数量,内容更新频率,预计并发用户数,是否需要脚本解释器等方面有着很大的差异,对不同特性资源采用能充分发挥其潜力的优化策略,能极大的提高web 站点的性能。例如:将图片部署在独立的服务器上并为其分配独立的新域名,对静态网页使用epoll模型可以在大并发数情况下吞吐率保持稳定。 三、数据库性能优化和扩展。 Web服务器软件在数据库方面做的优化主要是减少访问数据库的次数,具体做法就是使用各种缓存方法。也可以从数据库本身入手提高其查询性能,这涉及到数据库性能优化方面的知识本文不作讨论。另外也可以通过主从复制,读写分离,使用反向代理,写操作分离等方式来扩展数据库规模,提升数据库服务能力。 四、Web负载均衡及相关技术 负载均衡是web站点规模水平扩展的一种手段,实现负载均衡的方法有好几种包括基于HTTP重定向的负载均衡,DNS负载均衡,反向代理负载均衡,四层负载均衡等等。 对这些负载均衡方法做简单的介绍:基于HTTP重定向的负载均衡利用了HTTP 重定向的请求转移和自动跳转功能来实现负载均衡,我们熟悉的镜像下载就使用这种负载均衡。DNS负载均衡是指在一个DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时返回不同的解析结果将客户端的访问引到不同的机

ORACLE优化总结和注意事项

ORACLE优化总结和注意事项 本文档中对优化方法进行详述,并对在优化过程中发现的一些问题进行总结。列出ORACLE的一些注意事项 注意事项: 1.安装的过程中,请务必进行正确安装。 2.当安装过程中出现错误的时候,最好清除原有遗留信息,进行重装,否则在数据库运行 的过程中可能会出现各种诡异的问题。 3.当数据库安装的过程中如果有警告信息,请记录下来,存档,方便排查数据库问题 4.安装的过程中请选择OLTP的数据模板Transaction Processing 5.安装过程中文件的创建

Controlfile、Datafiles、Redo Log Groups如果条件允许,最好分别放于不同的磁盘上。其中Controlfile和Redo Log Groups要尽量保证放在不同的磁盘上 6.其中Redo Log Groups重做日志组最好建5组以上,每个文件大小在1G以上,最大不超 过3G,避免出现进行check_point的时候造成buffer wait 导致数据库宕机 7.检查/etc/hosts文件 配置最后一行信息,将当前的主机名和ip配对起来,避免应用服务连接数据库导致的性能损耗 8.安装完成后,请启动数据库确保数据库基本安装成功 步骤: sqlplus /nolog connect /as sysdba startup//启动数据库实例 exit//退出sqlplus lsnrctl start//启动监听

emctl start dbconsole 上述步骤如果执行完,没有报错,则说明数据库基本安装正确,并可正常运行。如果执行上述操作的时候出现了问题,则说明数据库安装的过程中出现了某些问题,即使数据库实例当前可以启动连接,但是在以后稳定服务的过程中也是有可能会出现一些数据库问题的。 配置OCI连接 因为当前应用服务采用OCI连接的方式,因此在运行应用服务之前要配置OCI的连接条件 1、需求软件: 如果应用服务是跟ORACLE数据库安装在一台机器上,则不需要额外软件,直接进入第2步即可 如果应用服务是跟ORACLE数据库分开部署,则需要在部署应用服务的机器上安装一个客户端(精简客户端即可大小几M)需要从官方网站下载三个文件instantclient-basic-linux-x86-64-10.2.0.3-20070103.zip instantclient-sqlplus-linux-x86-64-10.2.0.3-20070103.zip instantclient-jdbc-linux-x86-64-10.2.0.3-20070103.zip 解压到同一个目录中,同时在该目录下新建一个文件tnsnames.ora文件,文件中添加以下内容 # Generated by Oracle configuration tools. HMS = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.15.61)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = hms) ) )

音箱的摆放方法及技巧

1、直射式全频音箱尽量避免界面反射 直射式音箱是声音直接向外辐射的音箱,从理论上讲,它是一种扬声器直接与空气耦合音箱;从外观上看,它是一种扬声器喇叭口直接向外设置的音箱。这种音箱主要依靠声波的辐射特性,使扬声器直接向空间发送声能。在一般情况下,直射式音箱的低音辐射角度比高音辐射角度大,如果将音箱直接放在地面上,低音打到地上被反射后,传给听音者,而此时,由于音箱发出的直达声所走过的距离短于反射声所走过的距离,音箱低音的直达声先期到达人耳,反射声随后到达人耳,会出现低音“先来后到”的现象,导致低音重影。大家知道,低音成分的多寡对于声音的清晰度和可懂度的影响很大,而且低音本身就有浑浊之感,如果低音出现了重影,就会使声音听起来更加浑浊。 直射式音箱最好不要直接放在地面上,或位于紧靠墙角的位置,否则听音区听到的低音会被加重,并有含混不清之感。如果房间的地面采用对声音强反射的硬质光滑材料,那么低音浑浊现象会越发严重。 在实践中,可能会发现这种情况,在距离不高的房间中,用直射声音箱(尤其是全频直射式音箱)放音,经常会出现低音听起来浑浊的现象,而这种低音浑浊现象是用均衡器衰减声音中的低音成分所不可能解决的,声音中没有低音则已,一有低音声音声音就浑浊,其主要原因就是低音的反射声成分太多,低音存在 严重的重影现象。 为了充分减少低音反射的不良影响,在摆放直射式音箱时要采取以下两种措施之一:一是不要将音箱直接放在地面或位于紧靠墙角的位置,最好用金属架将音箱垫高40cm以上,摆放距侧墙大于40cm,距后墙大于20cm以上的位置,由于音箱距离反射界面较远,因此低音反射声被明显减少。 二是如果音箱前方地面为强反射材料(硬质光滑材料,如大理石地面),将音箱直接放在地面时,也可以采取在音箱前铺吸音地毯的方法来吸收低音的反射声,但低音不可能被充分吸收,还存在少量的反射。 2、气流式低音音箱可以利用地面反射 气流式音箱是扬声器的声音不直接向外辐射的音箱,按照专业术语说,它是一种扬声器振膜(纸盘)不直接与空气耦合的音箱。在专业音响领域,气流式音箱一般为低音音箱。现代的气流式低音音箱采用了先进的空气动力学原理,利用只有低音才可能产生的大幅度振膜振动,实现强烈的空气气流变化,借助这种气流变化来加强低音的传播。气流式低音音箱不仅由于空气动力学特性使得低音传得更远,还由于其优异 的额声学特性式得低音更加丰厚动听。 气流式低音音箱从外观上能够很容易地被辨认出来,它是一种低音扬声器背面向外、正面向内(反扣)或不能直接看到低音扬声器正面的音箱,目前最常见的是扬声器内藏式低音音箱和扬声器反扣式低音音箱两种。它们主要依靠声音传播的气流特性,向空间连续不断地送出一个个低音气流团,借助于气流团来传播声波,而不是靠简单的波辐射特性向空气发送声能,低音可以传得更远。 气流式低音音箱在摆放和安装方面相对来说比较自由,即可以吊挂在空气,也可以直接放在地面上。 但一般地讲,将气流式低音音箱放在地面上效果会更佳,这是因为,气流式低音音箱采用气流传播的方式,故其低音带有一定的指向性,即使存在声辐射现象,但声辐射所占比例也很小,故达到反射界面后的反射声含量也很小,低音反射音量适度。低音音箱直接放在地面上,可以充分发挥地面的作用,相当于把地面作为低音号角的延伸,如此大的低音号角使得音箱的低音下限频率声音的声阻更加匹配,低音听起 来越发厚实、丰满。 3、听音区域要充分获得音箱的直达声 直达声是从音箱发出直接到达听音者的声音,其主要特点是音色纯正,即音箱发出的是什么样的声音,听音者听到的几乎就是什么样的声音。直达声没有经过房间的墙面、地面和顶面的反射,不存在由于室内装饰材料对声音反射后产生的声缺陷,它也不受室内声学环境的影响,所以音质有保证,声音保真度高。现代室内声学设计中有一个很重要的原则就是听音区域充分利用从音箱发出的直达声,尽量控制反射声。 就一个房间而言,判定听音区域是否能获得所有音箱发出的直达声的方法很简单,一般采用视觉法即可。在听音区域如果听音者能够看到所有音箱的整体,且位于所有音箱共同交叉辐射的区域就可以获得音

服务器运维方案教学内容

服务器运维方案 为保官网的正常稳定运行,也为了更好的对服务器进行管理维护,特制定以下运维方案: 1.硬件系统管理 一、服务器运行稳定性 服务器在运往托管商处上架前,应对服务器的稳定性进行全面的测试,包括网站主程序的测试,网站数据库的测试,网站压力测试等多项内容,对服务器的运行稳定性进行检验,在硬件上特别是容易松动的地方进行检查加固。 服务器上架后,每天对服务器状态进行不间断的监控,每月对服务器出具一次安全检测报告,分析是否存在异常。 二、服务器性能 服务器的性能进行全面检测,特别是对服务器处理大批量数据的情况下的CPU的占用率,内存的占用率等进行查看,以确保服务器的性能。 三、服务器软硬兼容性 服务器需用windows sever自带的兼容性检查软件进行兼容性检查,列出兼容性及不兼容的硬件以备查看,特别是自行开发的程序是否有对硬件要求特别严格地方,需跟研发共同商议解决。 四、磁盘阵列等存储设备管理 如服务器有磁盘阵列,需对每块硬盘进行编号,并记录在案,对软件设置中的参数也要进行详细的记录,以备远程维护时指导机房人员进行远程操作。 五、机柜、电源、网线布局管理 1、服务器上架后,应对服务器进行拍照,确认各线路位置。 2、需对服务器的电源部分进行编号整理。 六、服务器安全 服务器上架前应对服务器各主要部件进行登记编号,如箱体可锁,应上锁,并加盖封条,对于可抽出部分,应详细记录编号。 七、服务器硬件巡检制度

每季度安排专人进入机房对服务器进行一次常规确认,包含服务器线路检查、服务器故障排除等。巡检完成后填写巡检登记表并留档备查。 八、托管机房的联系 应制作托管机房联系人表,对365天24*7内的机房人员、电话、手机登记在案。 2.网站运行管理 一、网站不间断运行稳定性监测 为了保证网站的稳定性及不间断性应对服务器异动情况进行检测,如服务器有异常可通过邮件或短信通知管理员。 每日对网站进行7*24小时流量及安全监控,分析出是否存在恶意攻击以及攻击来源,并对此进行安全处理,每月提交一次分析报告。 二、域名服务指向管理 为保持网站的稳定性,域名管理权限应该有专人统一持有,避免因域名服务指向原因引起的网站访问失效或访问错误的问题。 三、公司所属网站一级、二级、邮件服务器域名指向管理 公司域名的制订规则,公司域名制订后应由专人向域名持有人提供书面修改方案,域名持有人根据书面修改方案进行修改,修改并对书面文件进行备案,以防责任不清的情况发生。 四、域名DNS转向稳定性监控,DNS性能监控 公司注册域名因代理商不同,所以DNS转向服务器也不相同,在DNS转向服务器出现问题后应及时寻找解决途径,应对每个域名的DNS转向服务器提供者的联系方式进行备案,方便出现问题后的查找。 五、网站ICP注册管理,其它相关的注册管理 公司网站属营业性网站,并带有论坛BLOG系统等,应相通信管理局及新闻出版局等部门申请注册管理,并对非法内容进行监管,应有专人负责。

钻井液常规性能测试

中国石油大学(华东)油田化学基础实验报告 班级:石工1412 学号:姓名:教师:范鹏 同组者: 实验日期: 2016.9.28 实验一、钻井液常规性能测试 一、实验目的 1、掌握六速旋转粘度计的使用方法以及钻井液表观粘度、塑性粘度和动切力的测定和计算方法; 2、掌握静滤失仪的使用方法以及钻井液滤失量、pH值和泥饼厚度的测定方法; 3、掌握钻井液膨润土含量的实验原理和测定方法; 4、掌握钻井液密度的测定方法; 5、掌握钻井液漏斗粘度的测定方法; 二、实验装置 钻井液:400ml 高速搅拌机六速旋转粘度计打气筒失水仪滤纸量筒秒表钢板尺 PH试纸亚甲基兰溶液酸式滴定管玻璃棒 三、实验步骤 1、用高速搅拌器高速搅拌钻井液10min。 2、使用六速旋转粘度计测定并计算钻井液表观粘度、塑性粘度和动切力; 3、使用打气筒滤失仪测定钻井液滤失量、泥饼厚度和pH值; 4、测定并计算钻井液膨润土含量; 5、学习并掌握测定钻井液密度的方法; 6、学习并掌握测定钻井液漏斗粘度的方法。

四、实验数据记录与处理 1.数据记录 实验二无机电解质对钻井液的污染及调整 污染实验数据班级汇总表

2.数据处理 本组实验所得数据处理结果: 表面粘度AV=0.5 x Ф600=0.5x12=6 mPa.s 塑性粘度 PV=Ф600-Ф300=12-7=5 mPa.s 动切力YP=0.511 x (2 x Ф300-Ф600)=1.022 Pa 钻井液膨润土含量= 泥甲V 01.0V ?×70100 ×1000=14.3×泥 甲V V =14.3× 2 6 5?=40.04 g/l (1)基浆: 表面粘度AV=0.5 x Ф600=0.5x11=5.5 mPa.s 塑性粘度 PV=Ф600-Ф300=11-7=4 mPa.s 动切力YP=0.511 x (2 x Ф300-Ф600)=1.533 Pa (2)加量0.25g/100ml CaCl 2 泥浆: 表面粘度AV=0.5 x Ф600=0.5x16=8 mPa.s 塑性粘度 PV=Ф600-Ф300=16-12=4 mPa.s 动切力YP=0.511 x (2 x Ф300-Ф600)=4.088 Pa (3)加量0.50g/100ml CaCl 2 泥浆: 表面粘度 AV=0.5 x Ф600=0.5x18=9 mPa.s 塑性粘度 PV=Ф600-Ф300=18-15=3 mPa.s 动切力YP=0.511 x (2 x Ф300-Ф600)=6.132 Pa (4)加量0.75g/100ml CaCl 2 泥浆: 表面粘度 AV=0.5 x Ф600=0.5x19=9.5 mPa.s

营造最佳的听音环境 正确的音箱摆放技巧

随着社会影音娱乐需求的日益增长,人们对音响系统的“听感”提出了更高的要求。普通消费者往往通过更换、升级音箱来达到提高“听感”的目的。特别是对于一些音箱发烧友来说,他们动辄投入上千上万的资金到音响系统中,以提高系统音质。然而,正当人们把心思放在花更多的钱买更好的音箱时,而忽视的音箱的摆放问题。 音箱摆放位置的不同,将会直接影响到声音的平衡性、声场的深度和环绕声效以及重低音的效果等。正确而有效的摆放方法,有助于优化音箱的声音效果,不花一分钱就达到“升级”音箱的目的。 1、音箱的正确摆放 根据房间声学环境(如房间的大小、房间的封闭性及装饰)的不同,音箱的摆放方法也会有所差异,所以,你可以尝试音箱系统的各种不同的摆放方法,直到你感觉已获得最佳音效为止。 从目前音箱的声道结构来看,大致有2.0书架式双声道和2.1、4.1、5.1、7.1等X.1声道音箱,它们各自对应的音箱数目也就有2、3、5、6、8个之分。这样,如何正确地摆放它们、使之按照你的愿望发出“天籁之音”,就不是一件简单甚至可以忽视的事情了。尤其是多声道音箱系统,它最主要的目的就是为了建立一个声音定位准确且完整的音场,这对于PC影院更是一项基本的要求,而要达到目的就有赖于音箱的正确摆放。

对于音箱的摆放方法,目前也是多种多样的。比如有杜比实验室推荐的“专业”摆法,有常见的七种典型居室空间摆法,即所谓的轴线内侧法、正三角形法、三一七比例法、三三一比例法、长后墙摆法、贴墙摆法和菱形摆法等。下面我就按照目前音箱的声道结构类型,结合这些常见的音箱摆放方法进行通俗的阐述。 (1)书架式2.0音箱的基本摆放 最典型的就是“正三角形法”,这种摆法要求将一对音箱面向聆听者一字排开,摆放在显示器两侧,两音箱之间的距离应当在1.5~2米为宜。注意音箱应与后墙、侧墙相隔一定距离(20~50厘米以上),因为一般的2.0音箱的倒相孔都是后置的,如果音箱紧靠着后墙,倒相孔中的声波不能完全放出,声场的效果就会大打折扣,有些音箱更是必须借助墙壁的反射、叠加、混音才会有较好的低音效果。音箱也不要离侧墙太近,以防侧墙体的反射作用改变了声波的传播方向与强度而影响音质。然后使音箱与聆听者构成一个45°角的正三角形,并尽量使三者在同一平面上,聆听者坐在所谓的“皇帝位”上,即可得到最佳听音位置和回放声效。除了角度不变外,这个正三角形可大可小。房间小、后级功率不大时正方形小些;房间大、后级功率大时正三角形就可扩大些。

系统性能优化方案

系统性能优化方案 (第一章) 系统在用户使用一段时间后(1年以上),均存在系统性能(操作、查询、分析)逐渐下降趋势,有些用户的系统性能下降的速度非常快。同时随着目前我们对数据库分库技术的不断探讨,在实际用户的生产环境,现有系统在性能上的不断下降已经非常严重的影响了实际的用户使用,对我公司在行业用户内也带来了不利的影响。 通过对现有系统的跟踪分析与调整,我们对现有系统的性能主要总结了以下几个瓶颈: 1、数据库连接方式问题 古典C/S连接方式对数据库连接资源的争夺对DBServer带来了极大的压力。现代B/S连接方式虽然不同程度上缓解了连接资源的压力,但是由于没有进行数据库连接池的管理,在某种程度上,随着应用服务器的不断扩大和用户数量增加,连接的数量也会不断上升而无截止。 此问题在所有系统中存在。 2、系统应用方式(架构)问题(应用程序设计的优化) 在业务系统中,随着业务流程的不断增加,业务控制不断深入,分析统计、决策支持的需求不断提高,我们现有的业务流程处理没有针对现有的应用特点进行合理的应用结构设计,例如在‘订单、提油单’、‘单据、日报、帐务的处理’关系上,单纯的数据关系已经难以承载多元的业务应用需求。 3、数据库设计问题(指定类型SQL语句的优化)

目前在系统开发过程中,数据库设计由开发人员承担,由于缺乏专业的数据库设计角色、单个功能在整个系统中的定位模糊等原因,未对系统的数据库进行整体的分析与性能设计,仅仅实现了简单的数据存储与展示,随着用户数据量的不断增加,系统性能逐渐下降。 4、数据库管理与研究问题(数据存储、物理存储和逻辑存储的优化) 随着系统的不断增大,数据库管理员(DBA)的角色未建立,整个系统的数据库开发存在非常大的随意性,而且在数据库自身技术的研究、硬件配置的研究等方面未开展,导致系统硬件、系统软件两方面在数据库管理维护、研究上无充分认可、成熟的技术支持。 5、网络通信因素的问题 随着VPN应用技术的不断推广,在远程数据库应用技术上,我们在实际设计、开发上未充分的考虑网络因素,在数据传输量上的不断加大,传统的开发技术和设计方法已经无法承载新的业务应用需求。 针对以上问题,我们进行了以下几个方面的尝试: 1、修改应用技术模式 2、建立历史数据库 3、利用数据库索引技术 4、利用数据库分区技术 通过尝试效果明显,仅供参考!

ORACLE 性能优化

ORACLE 数据库性能优化 参考书目: 《ORACLE 9i Database Performance Tuning Guide and Reference》《ORACLE 9i Database Reference》 《ORACLE 9i SQL Reference》 《ORACLE 9i Database Administrator’s Guide》

一、数据库实例创建过程参数确定 在创建数据库实例过程中,需要确定以下几个参数: 1. 数据块大小(DB_BLOCK_SIZE) 该参数指明了ORACLE所处理的数据存贮于数据文档以及SGA内存中的数据块大小。 该参数的可选择的范围为:4k,8k,16k,32k,64k。对于OLTP系统而言,取值可以为4K或8K,对于DSS系统而言,则可以取较大的数据,如32K或64K 建议统一取8K(即8192) 说明 DB_BLOCK_SIZE的大小将影响创建表时的EXTENT的大小。例如指定db_block_size=16K,某表空间的EXTENT MANAGEMENT 为local autoallocate,则其系统将extent的大小最小指定为1M.所以将可能导致空间的浪费。 2. 字符集(Character set) 该参数确定数据库以何种字符集来存贮CHAR以及V ARCHAR、V ARCHAR2等字符类型的值。对于ORACLE数据字典中的字符(如表及字段的COMMENT 内容)具有同样的作用。因此需要考虑如字符集的使用。对于国际项目,因为数据库中的comment内容(包括表及字符、存贮过程中的中文字符等内容)可能性需要以中文存贮,而用户业务数据使用的字符可能性是使用本地的语言,基于此,该参数需要选择支持UNICODE的字符编码的字符集。目前ORACLE9i支持以下二种UNICODE字符集: ?UTF8 ?AL32UTF8 建议统一取AL32UTF8

扬声器系统的性能指标

1、声压频率特性:一个性能优越的扬声器系统,它的重放频带范围,理想情况下应该在人耳能听到的16-20kHz频率范围。结合较大声压级的超低音重放、尽量减少失真的要求,一般都把重放频率范围设定为30-20kHz,而且希望系统在各个听音点的响应特性尽量均匀。通俗地讲就是,在整个听音环境里,每个地方听到的声音大小都是一样的。 2、指向性和指向频率特性:在扬声器系统正面轴向水平30度和60度方向上测得的频率特性叫做该系统的指向频率特性,指向性指的是扬声器系统输出的声压级随声音辐射方向变化的特性。它受分频点频率、音箱结构形式、扬声器配置方法和分频网络元件值等因素的影响。所用的扬声器种类不同时,低音、中音和高音辐射到空间的指向性、声平衡性等特性都不相同。 3、最大输出声压级:扬声器系统的输出声压级与扬声器一样,是指在输入1W噪声电压信号的条件下,将标准测量传声器放在扬声器正面1m处测得的声压级的算术平均值。使用扬声器系统时,在某个距离上系统的声压量是否满足要求,都是用最大输出声压级这个参数来衡量的。 4、阻抗特性:扬声器系统的电气阻抗特性由所用扬声器单元的种类、性能以及分频网络元件等许多因素决定。针对不同的频率点,阻抗会不相同,一般用阻抗频率特性曲线来表示系统的阻抗特性。扬声器系统结构形式不同,阻抗特性也有明显变化。 5、谐波失真特性:扬声器系统的谐波失真特性与单个扬声器单元的谐波失真特性不同,它是由各个低音、高音等单元的失真特性综合而成的,而且还和音箱箱体、分频元件等有直接关系。这就要求在设计、使用扬声器系统时,应该根据实际情况,在重放频带内尽量使失真减小到最低值。否则,扬声器系统的失真特性会不理想。 6、耐输入能力:加到扬声器系统上的输入信号是通过分频器将低音、高音分开后,分别供给各个扬声器单元的,所以加在每个单元上的输入信号的大小是不同的。从系统整体性能考虑,主要是要限制集中于高频段的连续信号,防止高音扬声器单元过载损坏;低音、中音扬声器单元应该考虑能输入功率比较大的信号。

泥浆性能的测定方法

泥浆性能的测定方法 一)实验目的 1.了解测定泥浆基本性能所用仪器 2.掌握泥浆性能常用测定仪的使用与操作方法 二)实验内容 1.泥浆比重、粘度、失水量、切力、含砂量、固相含量、胶体率、pH值、润滑性等主要性能测定所用仪器的结构。 2.测定上述性能的方法。 三)测定方法及步骤 (一)NB-1型泥浆比重计 1.仪器 NB-1型泥浆比重计由泥浆杯、横梁、游动砖码和支架组成,在横梁上有调重管和水平泡,其结构如图1。 2.测定步骤 ①校正比重计

先在泥浆杯中装满清水,盖好杯盖,把游码移到刻度1时,如水平泡位于中间,则仪器是准确的;如水平泡不在中间,可在调重管内取出或加入重物来调整。 ②倒出清水,将待测泥浆注入杯中,盖好杯盖,擦净泥浆杯周围的泥浆,移动砝码使横梁成水平状态(水平泡位于中间)。游码左侧所示刻度即为泥浆比重。 (二)MLN-4 型马氏漏斗粘度计 1.仪器 粘度计由漏斗和量筒组成,构成如图2。量筒由隔板分成两部分,大头为500毫升,小头为200毫升。漏斗下端是直径为5毫米、长为100毫米的管子。 2.测定步骤 将漏斗垂直,用手握紧用手指堵住管口。然后用量筒两端,分别装200毫升和500毫升的泥浆倒入漏斗。用筛网滤去大的砂粒,将量筒500毫升一端朝上放在漏斗下面,放开手指同时以秒表计时。流出500毫升泥浆所需时间(秒),即为所测泥浆的粘度(视粘度)。作用仪器前,

应用清水对粘度计进行校正,该仪器测量清水的粘度为15秒。若误差在±1秒以内,可用下式计算泥浆的实际粘度。 (三)ZNN型旋转粘度计 ZNN型旋转粘度计有手摇两速、电动两速与电动六速三种。主要用于测量泥浆的流变参数。仪器结构如图3。 1.工作原理 电机经过传动装置带动外筒恒悚旋转,借助于被测液体的粘滞性作用于内筒一定的转矩,带动与扭力弹簧相连的内筒旋转一个角度。该转角的大小与液体的粘性成正比。于是液体的粘度测量转换为内筒转角的测量。 2.仪器结构(六速旋转粘度计) ①动力部分 双速同步电机转速 750、1500转/分 电机功率 7.5、15瓦 电源电压 220伏 ②变速部分 转速 3、6、100、200、300、600转/分 速度梯度 5、10、170、340、511、1022秒-1 ③测量部分

音箱的摆放

音箱位置摆放的学问 人是听觉的主体,正确摆放音箱的位置是获得良好听觉效果重要的一步。如果把 4.1的音箱堆放在一块,怎么能感受到3D环绕音效呢?因此,音箱摆放位置,特别对于多声道音箱来说可谓是至关重要的。 2.0声道音箱摆放 对于2.0声道音箱而言,人应该处在两个音箱连接线段的垂直平分线上,且人到音箱的距离应比音箱的间距大一些。两音箱相距一米到一米五左右。如果将它们放在电脑两侧,间距显然过小,这样营造的声场过窄,此时双耳离音箱也过近,听到的以直接声为主,墙壁的反射声为辅。由于普通的木制音箱都是一个电容分频,高低音喇叭有1/4的相位差,两个喇叭发出的声音在理论上是不同步的,因此人到音箱的距离越近效果就越明显。 此外如果相距太近,能清晰地听到高低音发自两个不同的喇叭,得到的音色不自然、不和谐;人与音箱相距若有一定距离,直接听到的声音与反射声能有效地融合,能切实地感受到声场的宽度与广度,听到的声音也能更柔和、自然。在此建议大家将音箱放于电脑的侧后方,与聆听者最少要有2米的距离,或者延长音箱的输入线,把音箱放在人的侧后方,然后前后移动找到最佳的听音位置。 多声道音箱摆放 对于多声道音箱来说,通常我们需要将低音炮摆放在墙角,喇叭口面对墙壁。卫星音箱放在同一平面上,喇叭口指向听者;左右两个前置音箱位于显示器稍前方,并与座位形成等边三角形;后置音箱与座位的距离是前置音箱距离的一半,且其水平倾角是前置音箱倾角的两倍。比如,后置音箱与座位的距离若是15厘米,水平倾角是10度,那么前置音箱与座位的距离就是30厘米,水平倾角是5度。 总之,卫星音箱营造的应该是一个3D环绕声音氛围,而不是仅仅让听者判断声音是从哪个音箱发出来的。 在高度方面,我们也需要注意,因为绝大多数音箱的音色会随位置的高低而有所变化,放在地上和放在桌上的音色不会相同。通常书架式音箱以放在桌上为宜,立式音箱放在地上并架起为宜,这时要将低音喇叭的高度尽可能地提高,最好与聆听者的双耳处于同一水平线上,这也是为什么一些落地式音箱要把低音喇叭设计在上方的原因。 音箱与环境的关系 声音与环境的关系也很大,一间专业的试音室可是造价不菲。房间的墙壁对音色的整体效果有不小的影响:音箱靠近墙壁,低音声波经过墙壁的反射后被人耳听到,同时它所发出声波的低频部分会更有效地带动周围的墙壁与喇叭一起振动,这样声音的低音部分就会得到加强,使声音更加浑厚凝重而富有感染力,所以音箱越贴近墙角放置,人所听到的低音效果越强。一些音箱则必须要借助墙壁的帮助才会有较好的低音效果,位置放的离墙远了,低音便变得单薄、空洞了。 普通的低档木制音箱也需要借助墙壁来提升低音效果的不足。低音炮也是如此,它的摆放位置其实是很随便的,因为低音的方向性不强,即与高音相比更难分辨它的方向来源,所以不妨把它放在墙角,不必一定要正对着听者。导相孔朝前的音箱是无所谓的,摆放导相孔朝后的音箱时切忌后面紧靠着墙,因为那样,导相孔中的声波不能完全放出,得到振动的只

web服务器性能优化

web服务器性能优化 导读:本文web服务器性能优化,仅供参考,如果觉得很不错,欢迎点评和分享。 作为一种资源的组织和表达机制,Web已成为Internet最主要的信息传送媒介。因此Web的性能已经成为判断一个网站成功与否的一个重要评估标准。而Web服务器则是决定Web性能的重要环节。 Web服务器性能就是指一个Web服务器响应用户请求的能力。为了提高Web服务器的性能人们进行了诸多尝试,已经取得了可喜的成果。本文通过对前人研究结果的分析,提出了在具体应用环境中优化Web服务器的方法和策略。 Web服务器概述 Web系统在现在网络中广泛使用,而Web服务器则是Web系统的一个重要组成部分。完整的Web结构应包括:HTTP协议,Web 服务器,通用网关接口CGI、Web应用程序接口、Web浏览器。 Web服务器是指驻留在因特网上某种类型计算机的程序。它是在网络中信息提供者基干HTTP的为实现信息发布、资料查询、数据处理等诸多应用搭建基本平台的服务器,其主要功能是提供网上信息浏览服务。当Web浏览器(客户端)连到服务器并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。

Web服务器在web页面处理中大致可分为三个步骤:第一步,web浏览器向一个特定的服务器发出Web页面请求;第二步,Web 服务器接收到web页面请求后,寻找所请求的web页面,并将所请求的Web页面传送给Web浏览器;第三步,Web服务器接收到所请求的web页面,并将它显示出来。 web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。在Web上,常见的大多数表单核搜索引擎上都是用的是CGI脚本。 影响web应用服务器性能的因素 Web服务器的性能就是指一个Web服务器响应用户请求的能力,服务器的性能对于一个Web系统来说至关重要。为了提高Web 服务器的性能人们进行了许多尝试,也采用了许多技术和方法,但是这些技术和方法往往缺乏适用性。 通过对前人的研究分析可以发现,在web服务器的优化方而存在这种问题的原因主要有两个:一方面是服务器性能评测造成的,一方面是选用优化方案时考虑不全面造成的。 现行的服务器性能评测工具在对Web服务器进行评测时,其实是由一台或几台计算机模拟客户机,与被测的Web服务器进行通信,它们其实组成的只是一个局域网的环境,这与真正的广域网的环境有一定的差别。 另外,评测工具在选择网络负载时,虽然已经尽可能的接近真实负载,但是与持续的高频率负载要求仍有差距;再者,在性能测试指

OracleSQL性能优化方法

OracleSQL性能优化方法 Oracle性能优化方法(SQL篇) (1) 1综述 (2) 2表分区的应用 (2) 3访咨询Table的方式 (3) 4共享SQL语句 (3) 5选择最有效率的表名顺序 (5) 6WHERE子句中的连接顺序. (6) 7SELECT子句中幸免使用’*’ (6) 8减少访咨询数据库的次数 (6) 9使用DECODE函数来减少处理时刻 (7) 10整合简单,无关联的数据库访咨询 (8) 11删除重复记录 (8) 12用TRUNCATE替代DELETE (9) 13尽量多使用COMMIT (9) 14运算记录条数 (9) 15用Where子句替换HA VING子句 (9) 16减少对表的查询 (10) 17通过内部函数提高SQL效率 (11) 18使用表的不名(Alias) (12) 19用EXISTS替代IN (12) 20用NOT EXISTS替代NOT IN (13) 21识不低效执行的SQL语句 (13) 22使用TKPROF 工具来查询SQL性能状态 (14) 23用EXPLAIN PLAN 分析SQL语句 (14) 24实时批量的处理 (16)

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要通过反反复复的过程。在数据库建立时,就能依照顾用的需要合理设计分配表空间以及储备参数、内存使用初始化参数,对以后的数据库性能有专门大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积存体会,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用咨询题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来讲明对数据库性能如何进行优化。 2表分区的应用 关于海量数据的表,能够考虑建立分区以提高操作效率。建立分区一样以关键字为分区的标志,也能够以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时能够进行讲明: create table TABLENAME() partition by range (PutOutNo) (partition PART1 values lessthan (200312319999) partition PART2 values lessthan (200412319999) 。。。。。。 如此,在进行大部分数据查询,数据更新和数据插入时,Oracle自动判定操作应该在哪个分区进行,幸免了整表操作,提高了执行的效率

钻孔泥浆性能指标测定方法

钻孔泥浆性能指标测定方法 (仪器:泥浆比重计三件套) 1、相对密度可用泥浆相对密度计测定,其方法是将要量测的泥浆装满泥浆杯,加盖并清洗从小孔中溢出的泥浆,然后置于支架上,移动游码,使杠杆呈水平状态,读出游码左侧所示刻度,即为泥浆的相对密度。 2、粘度可用标准漏斗粘度计测定,其测定方法是用两个开口杯分别量取200ml和500ml的泥浆,通过过滤网滤出砂粒后,将700ml 泥浆注入漏斗,然后使泥浆从漏斗中流出,流满500ml量杯所需的时间(s),即为所测泥浆的粘度。 3、静切力可用浮筒切力计测定,其测定方法是将约500ml泥浆搅拌均匀后,立即倒入切力计中,将切力筒沿刻度尺垂直向下移至与泥浆接触时,轻轻放下,当它自由下降到静止不动时,即静切力与浮筒重力平衡时,读出浮筒上泥浆面所对的刻度,即为泥浆的初切力。取出切力筒,擦净粘着的泥浆,用棒搅动筒内泥浆后,静止10min,用上述方法量测所得为泥浆的终切力。 4、含砂率可用含砂率计测定,其测定方法是将调好的泥浆50ml 倒进含砂率计,然后再倒清水,将仪器口塞紧摇动1min,使泥浆与水混和均匀,再将仪器垂直静放3min,仪器下端沉淀物的体积乘2就是含砂率。

5、胶体率的测定方法是将100ml泥浆倒入100ml的量杯中,用玻璃片盖上,静置24h后,量杯上部泥浆可能澄清为水,测量其体积如为Lml,则胶体率为(100-L)%。 6、失水率(ml/30min)的测定方法是用一张12cm×12cm的滤纸,置于水平玻璃板上,中央画一直径3cm的园圈,30min后,测量湿园圈的平均直径减去泥浆坍平的直径(mm),即为失水率。在滤纸上量出的泥浆皮的厚度即为泥皮厚度。 7、酸碱度的测定方法是取一条PH试纸放在泥浆面上,0.5s后拿出来与标准颜色相比,即可读出酸碱度值。 8、在钻孔施工中,泥浆可采用泥浆取样盒取样,其取样方法是用双绳控制取样盒的深度和阀门开关,当一绳将取样盒下吊到孔中取样部位时,另一绳提升,关闭阀门,上提取样盒出孔口,即完成取样。 泥浆比重试验 一个比重计,放在泥浆面就行了,很简单。 先在大筒里装满清水,把砣归零,调整小桶配重,使其平衡,然后把水倒掉换上泥浆,调整秤砣,使其平衡,读数,结束。

医院信息系统软硬件性能优化方案

目录 [背景] (2) [目标] (2) [性能分析] (2) [优化内容和步骤] (2) [结果检验和日常核查] (4) [注明] (4)

[背景] 随着医院业务量的增长和所使用信息系统模块的增加,数据库容量增长很快,三级医院保留半年的数据情况下,可以达到25G-30G,且使用模块和接口的数量也在增加,现象是速度明显放慢,操作人员使用不顺畅,影响了窗口正常工作,带来软件性能低下的评价。 硬件方案设计时要考虑承载能力和生命周期;对性能问题的考虑应贯穿于开发阶段的全过程,不应只在出现问题时才考虑性能问题。 [目标] 性能调节的目的是通过将网络流通、磁盘I/O 和CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量。 最终通过对性能分析,制定相应的编程规范,引导开发工作,提高产品质量。 [性能分析] 分析对象: 一、服务器 1、处理器:峰值在85%以下 2、缓存、内存:达到一个稳定值 3、磁盘:检测磁盘错误信息和磁盘空间大小(!!) 4、网络:跟踪网络流量 二、数据库 三、应用程序 分析手段方式: 1、性能跟踪器:发现服务器性能瓶颈 2、检查数据库(使用dbcc工具):是否是数据库对象错误引起 3、SQL SERVER Profiler:跟踪软件后台脚本性能,通过统计分析语句问题 4、主业务程序单元运行调试 5、其他跟踪分析工具 [优化内容和步骤] 一、硬件配置 1、硬件性能降低原因 (1)资源不足,并且需要附加或升级的组件;局部硬件存在瓶颈 (2)资源共享工作负载不平均,需要平衡。 (3)资源出现故障,需要替换。 (4)资源不正确,需要更改配置设置。 2、解决办法(升级的量级待定?) (1)服务器升级硬件配置或增加服务器,更改软件配置 (2)升级网络设备,或更改逻辑结构

音箱的音腔计算方法

ASW计算公式开口腔计算公式:V A = (2S x Q。)² x V AS(L) 通带纹波系数是带通式音箱的重要设计参数。选取合适的封闭腔带通Q值QB,查表得出fL和fH,用f。/Q。分别乘以这两个系,求出音箱频响曲线上下降3dB的两个频率点,要求与设计值相符。带通Q值越高,音箱的灵敏度越高,但通频带越窄;带通Q值取得越低,音箱的灵敏度越低,但通频带越宽。导相管的调振频率fB = QB x ( f。/ Q。) 导相管长度L=[(c²S]/(4*3.14²*fb²*V)] -0.82*S?² 密封腔计算公式:VB = V AS / a 顺性比a = (QB² / Q。²) – 1 箱体总容积为V = VA + VB 单腔倒相式音箱计算公式 1.低频扬声器单元的品质因数Q。、谐振频率f。及等效容积V AS是决定音箱低频响应的重要参数。品质因数Q。、谐振频率f。及等效容积V AS由喇叭供应商给出,或自己根护喇叭的基本性能参数进行公式计算,在已知品质因数Q。、谐振频率f。的前提下计算VAS。2.箱体容积计算公式:VB = V AS / a 箱体顺性比a值可由倒相音箱设计图表查出(91页图3-9),设QL=7。也可由下面的简表进行估算,如下表:3.确定倒相管截面积。 4.确定导相管长度,可用公式:L=[(c²S]/(4*3.14²*fb²*V)] -0.82*S?² 5.音箱的调整要点:原则是将倒相箱的谐振频率调整到最合适的频率点,使音箱的低频响应平坦。调整音箱的系统品质因数,使音箱的低音深沉,听起来即不干涩也不混浊;调整分频网络的分频点和相位特性,使音箱各频段的声压均匀,频率响应曲线平坦。一般的设计流程多媒体音箱并不是简单的将功放音箱结合到一块,因为使用环境上的不同,所以在设计上也应该注意到这个问题。但是很少有厂家注意到这个问题,这些厂家大多只是注意到了音箱外表的美与丑,根本没有考虑到音箱的工作环境,也就是说根本没有进行正确的音箱设计,所以其音质平平也就不足为奇了。有关这个问题以前曾先生写过不少文章,大家可以参看,我在此着重的谈一谈作为一款高质量重放声音的多媒体音箱的具体的设计过程,以及如何处理在设计时所遇到的问题。一选择合适的单元多媒体音箱工作状态处于近场小环境听音,因此决定了我们只能使用小容积箱体,选择小口径单元,这要求单元拥有合理的重放声压,以及足够宽的重放带宽。但从性能价格比来看,在中高档多媒体音箱中还是采用稍大一些口径的单元为好,4.5寸的口径可以认为是最易于做到性能价格比的一种尺寸,同时如果要生产高保真产品的话5寸是一种不错的口径。我觉得现在的多媒体音箱大都体积偏小,不过惠威的M200是一种不错的入门产品。我认为现代多媒体音箱应该将箱体控制在4--8升之间,当然还要与相关参数相配合,也就是我们常说的Thiele-Small参数一定要合适,而不是片面的夸大某一参数。由于低音单元口径小,所以更应该注意低频大动态性能,因为低音单元的震动系统最大线性位移量即反映了扬声器系统的大动态性能。如线性位移量偏小,则在高声压级大动态时,不但低音不能有效重放而且各种失真也会增大,特别是影响音质的奇次谐波失真。现在大多数多媒体音箱的磁路设计也欠佳,磁体小,上下夹板导磁率低,对振盆控制能力低,因此而引起的非线性失真也较大。因此在现代多媒体音箱中的总的失真率将达到7%左右或更高。这在HI-FI看起来是不可容忍的。还有就是振盆材料,由于近年来低档PP盆,防弹布盆,玻璃纤维盆,碳纤维盆的价格日益低下,再加上外观好,因此更多的被用在了多媒体音箱上来,但殊不知,后三种振盆的自阻尼很小,工作状态是极难控制的,一般在中高端的某一频率点上会产生很多的失真,大到不可忍受的地步,这个频率点就是我们常说的盆分裂点。因为现代多媒体音箱都没有分频器,再加上设计不合理的箱体,是很难压制这个分裂点的。而第一种振盆即PP盆,虽然听起来韧性好,中频饱满,低频富有弹性,但由于刚性相对较低,因而在大音量下引起的失真也较大。中频的层次感也不是很好。而相对个性较小,较容易控制的质量好的纸盆单元,却很难见到有厂家应用。就个人DIY制作而言,南京的110,150系列防磁低音,银笛的QG4,QG5系列防磁高音单元,都是不错的DIY选择,要求高一点的还可以选择惠威,发友等厂家专为多媒体音箱设计的

相关主题
文本预览
相关文档 最新文档