提升服务器性能的方法
1. 有什么有效提高服务器性能的方法
受教了,有机会可以去你们那看看服务器
2. 如何设计高并发的服务器,如何提升服务器性能
你可以去服务器厂商(正睿)的网上,将需求说明一下,让对方给你产品配置方案(这点很重要),然后可以将参数和配置与其他品牌产品进行比较,找到最优性价比的产品。
3. 如何提高服务器的性能
服务器硬盘挂台式机主板不知道你挂的是什么硬盘,应该是SATA的7200转。在存储速度和性能上跟你在台式机上的一样不会有提升。你这样做只是增加硬盘空间而以
4. 如何提高Web服务器性能
在各种网站的正常运营中,由于用户需求的多样性,直接导致了主机应用的复杂性,如,Client/Server模式、/Server模式、三层应用服务系统迅速普及,服务器作为网络信息发布、处理的关键性节点,比以往要承载更多的流量负载。也许服务器的性能表现会不尽如人意,这就需要分析具体的服务器性能瓶颈并找到解决办法。本文对影响Web服务器性能的各方面做了分析,提出了缓解Web服务器性能瓶颈效应的方法。
数据库的互连性
目前,互联网上最大的资源杀手当非在线数据库(online databases)和电子商务(e-commerce)等应用莫属。提供web功能的数据库和应用服务器近年来飞速增长,显示出强劲的发展势头。从性能的角度来看,在线数据库,基于MySQL、Oracle、SQL Server或Sybase等的应用如日中升,迫使我们更加关注服务器的性能状况。对于大型网站来说,高负载的HTTP传输和数据库处理事务互相抢占资源,并最终可能导致服务器在极短的时间内崩溃或者变得慢如蜗牛。在这种情况下,建议使用专门的后台运行的数据库服务器(当然也是出于安全的考虑)以及前台处理的HTTP服务器。
网络带宽
可用的带宽对于主要由静态页面构成的站点来说,是最关键的因素。撇开网络的吞吐总量以及响应速度不讲,在高负载的环境下,系统的突发传输速率是非常重要的。在用户访问的高峰期,某些站点也许根本无法访问。这样的站点在用户企图访问它时显得慢如蜗牛,而服务器自身却仍旧非常空闲。这样看来,要成功搭建一个web主机,选择合适的带宽显然是非常重要的。必要时,服务器到核心交换机可选择千兆带宽。
内存
可用的物理内存是另外一个重要因素,这是因为对内存的占用率会直接随着对服务器请求数量的增加而增加。文件缓冲区也是非常重要的,因为它能将磁盘的使用频率降到最低程度,明显加快事务处理的总体速度。对内存的需求很大程度上取决于使用在特定服务器上的软件的具体情况。除了操作系统的管理能力和文件系统的缓冲区大小之外,还需要将所选择的web服务器软件对硬件的特殊要求调查清楚。
处理器
对于那些主要由静态页面构成的站点来说,CPU是最次要的一个因素。但是,在使用了包括CGI、服务器解析文档或提供web访问方式的数据库的情况下,就需要更多地关注CPU的性能。在这种场合下,如果向一个较小的用户群体提供某种对CPU依赖很大的应用服务,那么,一个高速的单CPU可能是最有用的。但是,如果存在多个用户同时对大批量的页面提出访问请求,那么在这种情况下(尤其在这些页面均以独立的进程或线程模式打开情况下),多CPU系统(即使这些CPU的速度都很慢)更为管用。
以上简单分析了各类平台下的服务器性能瓶颈,并提出了缓解的基本途径和方法。当然,缓解服务器性能瓶颈的方法还有采用服务器集群、负载平衡技术等。
5. 如何让服务器发挥更多性能
画网格?
有些科学计算软件是利用 显卡 来做计算的。 比如CUDA
6. 怎样提高IIS服务器性能,加快服务器速度
1、应该分配和释放多个对象
你应该尽量避免过量分配内存,因为内存分配可能是代价高昂的。释放内存块可能更昂贵,因为大多数分配算符总是企图连接临近的已释放的内存块成为更大的块。直到Windows NT? 4.0 service pack 4.0,在多线程处理中,系统堆通常都运行得很糟。堆被一个全局锁保护,并且在多处理器系统上是不可扩展的。
2.不应该考虑使用处理器高速缓存
大多数人都知道由虚拟内存子系统导致的hard 页错误代价很高,最好避免。但是许多人认为其他内存访问方法没有什么区别。自从80486以后,这一观点就不对了。现代的CPUs比RAM要快得多,RAM至少需要两级内存缓存 ,高速L1 缓存能保存8KB数据和8KB指令,而较慢的L2 缓存能保存几百KB的数据和代码,这些数据和代码混合在一起。L1 缓存中内存区域的一个引用需要一个时钟周期,L2 缓存的引用需要4到7个时钟周期,而主内存的引用需要许多个处理器时钟周期。后一数字不久将会超过100个时钟周期。在许多方面,缓存像一个小型的,高速的,虚拟内存系统。
至于和缓存有关的基本内存单元不是字节而是缓存列。Pentium 缓存列有32个字节宽。Alpha 缓存列有64个字节宽。这意味着在L1 缓存中只有512个slot给代码和数据。如果多个数据一起使用(时间位置)而并不存储在一起(空间位置),性能会很差。数组的空间位置很好,而相互连接的列表和其他基于指针的数据结构的位置往往很差。
把数据打包到同一个缓存列中通常会有利于提高性能,但是它也会破坏多处理器系统的性能。内存子系统很难协调处理器间的缓存。如果一个被所有处理器使用的只读数据,和一个由一个处理器使用并频繁更新的数据共享一个缓存 列,那么缓存将会花费很长时间更新这个缓存列的拷贝。这个Ping-Pong高速游戏通常被称为"缓存 sloshing"。如果只读数据在一个不同的缓存 列中,就可以避免sloshing。
对代码进行空间优化比进行速度优化效率更高。代码越少,代码所占的页也越少,这样需要的运行设置和产生的页错误也会更少,同时占据的缓存 列也会更少。然而,某些核心函数应该进行速度优化。可以利用profiler去识别这些函数。
3.决不要缓存频繁使用的数据。
软件缓存可以被各种应用程序使用。当一个计算代价很高时,你会保存结果的一个拷贝。这是一个典型的时空折中方法:牺牲一些存储空间以节省时间。如果做得好,这种方法可能非常有效。
你必须正确地进行缓存。如果缓存了错误数据,就会浪费存储空间。如果缓存得太多,其他操作可以使用的内存将会很少。如果缓存得太少,效率又会很低,因为你必须重新计算被缓存 遗漏的数据。如果将时间敏感数据缓存得时间过长,这些数据将会过时。一般,服务器更关心的是速度而不是空间,所以他们要比桌面系统进行更多的缓存。一定要定期去除不用的缓存,否则将会有运行设置问题。
4.应该创建多个线程,越多越好。
调整服务器中起作用的线程数目是很重要的。如果线程是I/O-bound的,将会花费很多时间用来等待I/O的完成-一个被阻塞的线程就是一个不做任何有用工作的线程。加入额外的线程可以增加通量,但是加入过多的线程将会降低服务器的性能,因为上下文交换将会成为一个重大的overhead。上下文交换速度应该低的原因有三个:上下文交换是单纯的overhead,对应用程序的工作没有任何益处;上下文交换用尽了宝贵的时钟周期;最糟的是,上下文交换将处理器的缓存填满了没用的数据,替换这些数据是代价高昂的。
有很多事情是依靠你的线程化结构的。每个客户端一个线程是绝对不合适的。因为对于大量用户端,它的扩展性不好。上下文交换变得难以忍受,Windows NT用尽了资源。线程池模型会工作得更好,在这种方法中一个工人线程池将处理一条请求列,因为Windows 2000提供了相应的APIs,如QueueUserWorkItem。
5.应该对数据结构使用全局锁
使数据线程安全的最简单方法是把它套上一把大锁。为简单起见,所有的东西都用同一把锁。这种方法会有一个问题:序列化。为了得到锁,每一个要处理数据的线程都必须排队等候。如果线程被一把锁阻塞,它没有在做任何有用的事。当服务器的负载较轻时,这个问题并不常见,因为一次可能只有一个线程需要锁。在负载很重的情况下,对锁的激烈争夺可能就会成为一个大问题。
设想在多车道高速公路上发生了一个意外事故,这条高速公路上的所有车辆都被转向一条狭窄的道路。如果车辆很少,这一转换对交通流的速率的影响可以忽略。如果车辆很多,当车辆慢慢并入那条单通道时,交通阻塞会延伸几英里。
有几种技术能够减少锁竞争。
· 不要过分保护,也就是说,不是非常必要不要锁住数据。只有需要时才去持有锁,而且时间不要过长。不要在大段代码周围或频繁执行的代码中没必要地使用锁,这一点很重要。
· 对数据进行分割,使它能够用一套独立的锁保护。例如,一个符号表可以按标识符的第一个字母分割,这样在修改名字以Q开头的符号的值时,就不会去读名字以H开头的符号的值。
· 使用APIs的Interlocked 系列(InterlockedIncrement,等)自动修改数据而不需要锁。
· 当数据不是经常被修改时可以使用多读者/单作者(multi-reader/single-writer)锁。你将获得更好的并发性,尽管锁操作的代价将更高并且你可能会冒饿死作者的危险。
· 在关键部分使用循环计数器。参见Windows NT 4.0 service pack 3中的SetCriticalSectionSpinCount API。
· 如果你不能得到锁,使用TryEnterCriticalSection并做一些其他的有用的工作。
高竞争导致serialization,serialization导致降低CPU的利用率,这促使用户加入更多的线程,结果事情变得更糟。
6.不必注意多处理器机器
你的代码在多处理器系统上比在单处理器系统上运行得还要糟,这可能是件令人恶心的事。一个很自然的想法是,在一个N维系统上运行N次会更好。性能很差的原因是竞争:锁竞争,总线竞争,和/或缓存列竞争。处理器都在是争夺共享资源的所有权,而不是做更多的工作。
如果你一定要编写多线程应用程序的话,你应该在多处理器盒上对你的应用程序进行强度测试和性能测试。单处理器系统通过时间分片地执行线程而提供一个并发性的假象。多处理器盒具有真正的并发性,竞争环境和竞争更容易发生。
7.应该始终使用模块化调用;他们很有趣。
利用同步模块化调用来执行I/O操作对大多数桌面应用程序来说是合适的。但是,他们不是使用服务器上的CPU(s)的好方法。I/O操作要花费上百万个时钟周期来完成,这些时钟周期本来可以被更好地利用。利用异步I/O你能得到显著提高的用户请求率和I/O通量,不过增加了额外的复杂性。
如果你有需要花费很长时间的模块化调用或I/O操作,你应该考调拨多少资源给他们。你想使用所有的线程还是有个限制?一般地,使用有限的几个线程要好些。构建一个小的线程池和队列,利用队列来安排线程的工作完成模块化调用。这样,其他线程就可以拾取和处理你的非模块化的请求。
8.不要进行测量
当你能够测量你所谈论的事情并用数字表达它时,这就表示你对他有了一定的了解;但是如果你不能用数字表达时,你的知识是贫瘠的不能令人满意的;这可能是知识的开始,但这时你简直不可能将你的思想提高到科学的水平。
- Lord Kelvin (William Thomson)
如果不测量你就不能了解应用程序的特性。你在黑暗中摸索,一半是靠猜测。如果不识别性能问题,你就不能做任何改进或做出工作量计划。
测量包括黑匣子测量和profiling。黑匣子测量的意思是收集由性能计数器(内存使用,上下文交换,CPU利用等)和外部检测工具(通量,反映时间等)所显示的数据。为了profile你的代码,你编译代码的一个工具版,然后在各种条件下运行它,并收集关于执行时间和过程调用频率的统计数据。
测量如果不用于分析的话就一点用都没有。测量将不仅告诉你有问题,而且甚至能帮助你找到问题发生在哪,但它不能告诉你为什么会有问题。对问题进行分析以便你能正确地改正他们。要从根本上解决问题而不是停留在表面现象。
当你进行改动后,要重新测量。你要知道你的改动是否有效。改动也可能会暴露其他性能问题,测量-分析-改正-再测量的循环就会重新开始。你也必须要有规律地进行测量,以便发现性能衰退问题。
9.应该使用单一用户,单一请求的测试方法。
书写ASP和ISAPI应用程序的一个通病是只用一个浏览器去测试应用程序。当他们在Internet上应用他们的程序时,他们才发现他们的应用程序不能处理高负载,并且通量和反应时间另人可怜。
用一个浏览器测试是必要的但是不够的。如果浏览器反应得不够快,你就知道你有麻烦了。但即使它在使用一个浏览器时很快,你也不知道它处理负载的能力如何。如果十几个用户同时请求会发生什么事?一百个呢?你的应用程序能容忍什么样的通量?它能提供什么样的反应时间?在轻载时这些数字会怎样?中等负载呢?重载呢?在多处理器机器上你的应用程序会如何?对你的应用程序进行强度测试,这对于找出bugs发现性能问题来说是基本的。
类似的负载测试考虑适用于所有的服务器应用程序。
10.不应使用实际环境。
人们往往只在几个特定的,人工的环境(如下benchmarks)下调整应用程序。选择和实际情况相对应的各种情况,并为针对各种操作进行优化,这一点很重要。如果你不这样做,你的用户和评论家一定会这样做,并且他们将依此来评判你的应用程序的好坏。
7. 如何对服务器进行性能优化
我对我的windows2000服务器是如何进行性能优化的
1:我们知道,系统刚装完之后,会存在很多无用的文件,这些文件都在winnt下面我们就对这些文件进行del,比如*.tmp、*.bak、*.log、*.old、*.txt甚至是作为桌面背景的*.bmp文件,help这个目录下的,基本上也没什么用,反正服务器上的help我是从来不去看它的!还有winnt\temp文件,是软件安装的过程序中,可能生成的临时文件,如果没用,就删掉吧!然后清空回收站吧!
2:启动和故障恢复选项,右击我的电脑,选择属性\高级\启动和故障恢复,将选择操作系统列表前面的勾直接去掉好了,写入调试信息,选择无!
3:浏览器历史记录和缓存,可以通过点击浏览器的“工具/Internet选项/常规/Internet临时文件/删除文件
4:(1)运行磁盘查错的时候,请先把运行的程序关闭,打开“我的电脑”,右击想要整理的硬盘驱动器,选择“属性/工具”,在查错一栏中点击“开始检查”在进行磁盘检查之前请确认“自动修复文件系统错误”和“扫描并试图恢复坏扇区”这两项被选中。
(2)碎片整理,请把所有运行的程序关闭,特别是屏幕保护、计划任务、实时查杀毒软件等等可能造成磁盘存储数据变化的程序,然后打开“我的电脑”,右击想要整理的硬盘驱动器,选择“属性/工具”,在“碎片整理”中选择“开始整理”,你可以点击“分析”按钮让系统分析你的硬盘的基本情况,然后告诉你的硬盘是否需要整理。如果需要整理,那么你只要点击“碎片整理”按钮即可。整理的时间依据你的这个硬盘分区有多少簇来决定――不得不承认这个过程相当乏味、枯燥而且缓慢。所以你可以找具有类似功能的软件比如诺顿工具箱中就有磁盘整理的组件、另外象Diskeeper、Vopt等等程序整理的效果也不错(但是同windows自带的磁盘整理软件的效果仍然有差距),而且速度快。
5:硬盘驱动器设置,现在的硬盘一般都是支持DMA(Direct Memory Access:直接内存存取)模式,所以确保你的DMA硬盘(不管是DMA33/66/100)只要能正确的在DMA模式下工作,就能保证你的系统工作在比较高的效率之下。启动DMA模式――点击“开始/设置/控制面板/系统/硬件/设备管理器”,然后点击“IDE ATA/ATAPI控制器”,右击Primary IDE Channel,选择“属性/高级设置”在“传送模式”中选择DMA(若可用)。依据提示重新启动计算机,你下次打开这个界面应该能看到“当前传输模式”中是DMA了。
6:关闭索引服务,关闭这项功能的方法是,打开我的电脑,右击相应的硬盘驱动器分区图标,选择属性,去掉“允许索引服务编制该磁盘的索引以便快速搜索文件”选项前的对钩,点击“应用”,就会出现是仅仅将属性应用于这个分区的根目录还是连同它下面的子文件夹和文件。选择“将更改应用于<盘符>:\,子文件夹和文件”。然后点击确定,等待系统自己处理完成就可以了。
7:自动关闭停止响应的程序,对于停止响应的程序,可以通过修改注册表使得系统不再通知你,而是自动关闭――不再需要用户的干预,从而提高工作效率。具体方法是,打开注册表编辑器,找到如下键值:
HKEY_CURRENT_USER\Control Panel\Desktop,把AutoEndTasks修改为1。以后如果遇到停止响应的程序,系统就会自动中止它。
8:设置虚拟内存,我们应选择优化后台服务
9:停止Win2000中不必要的服务,以下是我停掉的服务,大家可以参考一下!
服务名 简介
COM+ Event System 提供事件的自动发布到订阅 COM 组件
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
Network Connections 管理“网络和拨号连接”文件夹中对象,在其中您可以查看局域网和远程连接
Plug and Play 管理设备安装以及配置,并且通知程序关于设备更改的情况
Protected Storage 提供对敏感数据(如私钥)的保护性存储,以便防止未授权的服务,过程或用户对其的非法访问(备注:缺少了此项后可能造成在IE中输入文字后死机)
RusAs Service 在不同赁据下启动过程服务
Remote Procere Call (RPC) 提供终结点映射程序(endpoint mapper)以及其它 RPC 服务
Security Accounts Manager 存储本地用户帐户的安全信息
Server 提供 RPC 支持、文件、打印以及命名管道共享
Task Scheler允许程序在指定时间运行
Windows Management Instrumentation Driver Extensions 与驱动程序间交换系统管理信息
8. 如何充分利用CPU资源提高服务器的性能
最好能具体说明你的问题
对于客户端来说 一般情况下 CPU 的占用在 20% 以下 如果版是服务器 则要考虑权 这个服务器具体的功能 是文件存储 还是计算 还是其它应用 但无论如何 CPU 的占用都不会高的离谱
如果认为这是一种浪费的话 可以引入虚拟服务器 即在一台实体 vmware 服务器上 安装多个服务器并分配资源 从而共享 CPU 资源
问题是 这种配置 未必是经济和性能最优
9. 怎样提高Windows服务器性能
这里有许多你只需要做简单的操作就能对提高服务器的性能有所帮助。所有的这些都不可能对移动页文件到一个指定磁盘有什么异常情况发生,尽管大多数的操作需要手动完成,但是这些所有的技巧都能够显著地提高服务器的性能。
大多数讨论关于优化服务器性能的文章都会集中在使用性能监视器来寻找性能瓶颈问题。性能监视器对于如何提高服务器性能来说,确实是一个优秀的工具。但是,使用性能监视器,是需要用户必须了解性能监视器中产生的数据都是些什么意思。
那么,这里有十项能够帮助你做提高服务器性能的事情
1.为页文件使用专用磁盘
这项技巧可能是最大限度的提高你服务器性能的方法。默认情况下,Windows创建一个页文件,将它作为虚拟内存。因为Windows会频繁的使用这个文件。这个文件最好的存储位置就是在一个专门磁盘上(注意:不是单独卷)。服务器性能做这些会确保Windows在读取页文件数据前,而将不需等待其他的应用使用硬盘完成。
2.保证你的硬盘定期运行磁盘碎片整理程序服务器性能
现今的磁盘在执行连续不断的读取时,其实是很快的。然而,当磁盘被请求去读取散乱存放的数据时,Windows的性能就会下降。通过运行磁盘碎片整理程序,你能够确保文件能以顺序的方式而不是杂乱无章的存放在磁盘上,从而,你的计算机将会高效地读取文件。
3.使用NTFS文件系统
尽管对于Windows服务器版本操作系统来说,NTFS是默认的文件系统,Windows是支持使用FAT和FAT-32文件系统的。我读过的每一本MSCE培训教程推荐使用NTFS文件系统是因为它比FAT和FAT-32文件系统使用中更安全。服务器性能但是这些书籍中都没有提及NTFS是一种基于处理(transaction-based)的文件系统。这就意味着相比较FAT和FAT-32文件系统而言,NTFS文件系统更快。
4.避免运行16-位应用
64位Windows操作系统根本不能够运行16位应用,所以说这一项对于64位操作系统来说并不是个问题。但是,32位Windows操作系统将会运行16位应用。使用多任务处理模式的Windows更多的使用16位应用。服务器性能讨论Windows的多任务处理使用16位应用将需要单独开篇说明,但是可以确定的说,运行16位应用会对降低性能。
5.查找内存泄漏(memory leaks)
内存泄漏很难被写成是一个应用上的问题。通常情况下,它会为一个应用去在一个需要的基础上请求操作系统中的内存。典型的是,当应用不再被运行时,它将会把内存释放给操作系统。如果一个应用包括了一个内存泄漏,当它被运行时,将会向内存发出请求,但是当使用完毕后,释放内存是失败的。服务器性能当下一次应用需要内存时,它将会向Windows要求的内存数比上一次要多。长此以往,Windows能够为其他的应用提供的内存数将会越来越少。
最初,内存泄漏对系统性能的影响是可以忽略不计的,但是当这样的泄漏变得越来越多的时候,它对系统性能的影响就会凸现出来。
尽管我曾经说过我不会在这篇文章中讨论性能监控器,但是对于查找内存泄漏来说,性能监控器是最佳工具。
6.移除那些极少使用的组件
我曾经购买的每一台服务器上都会装上各种各样的监控或者日志组件。如果你能够有计划有规律的使用这些组件的话,在计算机上安装这些组件算不得什么不正确的选择。服务器性能但是令我吃惊的是有很多系统管理员安装(或者从不移除)那些服务器上的组件,并且实际上除了浪费系统资源外,它们甚至从来没被运行过。
7.停止运行那些不使用的服务
在一篇类似的文章中,我也推荐浏览服务控制管理器,并关闭那些没有被用到的服务。这样不但能够提高我们的服务器性能,另外它也可以提高服务器的安全性。计算机有一条法则描述了被执行的代码越多,代码中包含的不安全因素的机会就会增多。通过关闭那些不使用的服务,你做得即是减少执行代码的大小,从而降低服务器包含的安全漏洞被利用的机会。
8.注销
这是另一个你能够提高服务器安全和性能的方法。当你不再使用控制台的时候,出于安全原因考虑,你应该进行注销操作。服务器性能 同时,在你登陆时,Windows将会加载你的用户属性,这将会消耗内存和CPU。
9.压缩磁盘
当微软发布MS-DOS5.0时,它们介绍了其磁盘压缩的特色功能。当时的情况是让硬盘或者软盘能够通过压缩功能存储更多的数据。当我试着使用磁盘压缩技术,这时,我的计算机运行就慢了下来,我就改回使用一个没有压缩的磁盘,并且直到最近再没有使用过压缩。
现在,在正常的情况下,压缩确实能够提高系统性能。在一台计算机中,硬盘算得上是运行最慢的部分了。然而,如果你能够压缩一个文件,你就是减少了它的物理大小,这也将会减少从硬盘中读取它的时间量。
同时,一个压缩文件必须在它从磁盘读取后被解压。解压操作通常是占用内存,并且进程会附带的使用一些CPU时间。如果你的服务器运行一个磁盘加强的应用来解决大量的分散文件(不是一个数据库),执行压缩能够提高系统性能。
10.调整服务器响应
与个人计算机不同的是服务器并不总是从服务器的控制台那里运行应用。那么,最优化服务器是将获得优先权的应用到后台执行。
你可以通过打开服务器的控制面板,并双击系统图标。当窗口中显示系统属性标签时,转到“高级”标签项,找到性能设置部分,并点击设置按钮。窗口中将会显示性能选项属性标签。转到属性标签中的高级选项,并确定服务器设置为后台服务的最佳性能。
望采纳