导航:首页 > 废水知识 > 服务器并发数怎么提升

服务器并发数怎么提升

发布时间:2020-12-31 14:17:02

1. 并发数与服务器配置的关系,能举个例子说明一下吗

做网站的话,服务器要分前端和后端的,还有cache、负载平衡、网络带宽专和存储系统等问属题要考虑,不是单讲一台服务器就能说清楚的。

只讨论一台服务器的话,3650双路加4G内存支持到5万并发是容易达到的,即使针对业务流比较复杂的情况,也能满足很大程度的需要。
但是考虑到存储子系统,比如4块sas硬盘raid0,可能只能达到5000数量级的并发请求。如果是以另外的光纤盘阵来支持存储则可以显著提高硬盘传输带宽的性能。
最后还要考虑到你的网络带宽,对大多数网站来说,通常这才是最大的瓶颈所在。也就是说即使你的cpu、内存、硬盘都没问题,也会因为租用的网络带宽限制而影响最大的并发数。

还有一点,经过优化的网站程序对结果也有很大影响。事实上很多网站的访问体验很糟糕,其实不是因为硬件的原因,而是程序写的太烂。

很抱歉我本想以单台服务器来讲,但是说着说着又变成讲网站架构了。不如举个例子吧,如果你在这台服务器上运行discuz或动网之类的服务,在没有特别高峰的情况下,5万并发是没有问题的。

2. 浅谈如何提高服务器并发能力

吞吐率,单位时间里服务器处理的最大请求数,单位req/s

从服务器角度,版实际并发用户数权的可以理解为服务器当前维护的代表不同用户的文件描述符总数,也就是并发连接数。服务器一般会限制同时服务的最多用户数,比如apache的MaxClents参数。

这里再深入一下,对于服务器来说,服务器希望支持高吞吐率,对于用户来说,用户只希望等待最少的时间,显然,双方不能满足,所以双方利益的平衡点,就是我们希望的最大并发用户数。

3. 什么是服务器并发量并发量如何计算

并发的意思是指网站在同一时间访问的人数,人数越大,瞬间带宽要求更高。服务器并发量分为:1.业务并发用户数;2.最大并发访问数;3.系统用户数;4.同时在线用户数;
说明服务器实际压力,能承受的最大并发访问数,既取决于业务并发用户数,还取决于用户的业务场景,这些可以通过对服务器日志的分析得到。

一般只需要分析出典型业务(用户常用,最关注的业务操作)

给出一个估算业务并发用户数的公式(测试人员一般只关心业务并发用户数)

C=nL/T

C^=C+3×(C的平方根)

C是平均的业务并发用户数、n是login session的数量、L是login session的平均长度、T是指考察的时间段长度、C^是指业务并发用户数的峰值。

假设OA系统有1000用户,每天400个用户发访问,每个登录到退出平均时间2小时,在1天时间内用户只在8小时内使用该系统。

C=400×2/8=100

C^=100+3×(100的平方根)=100+3×10=130

另外,如果知道平均每个用户发出的请求数u,则系统吞吐量可以估算为u×C

精确估算,还要考虑用户业务操作存在一定的时间集中性(比如上班后1小时内是OA系统高峰期),采用公式计算仍然会存在偏差。

285-104-1346

4. tomcat 怎么修改服务器的并发连接数

用tomcat的数据库连接池,修改tomcat配置文件server.xml,在context标签中加上
<Context path="" docBase="ROOT" debug="0">
<Resource name="jdbc/OracleDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/OracleDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@10.11.6.1:1521:dbname</value>
</parameter>
<parameter>
<name>username</name>
<value>yourname</value>
</parameter>
<parameter>
<name>password</name>
<value>yourpasswd</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>1000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value> </parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
maxActive 是最大激活连接数,这里取值为1000,表示同时最多有1000个数据库连接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连 接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到超时为止,也可取值 9000,表示9秒后超时。

5. 如何提高服务器并发处理能力

消除瓶颈是复提高服务制器性能和并发能力的唯一途径。
如果你能够消除所有的瓶颈,你就能够最大的发挥硬件性能,让系统的性能和并发数到达最佳。
采用多线程多核编程,使用事件驱动或异步消息机制,尽量减少阻塞和等待操作(如I/O阻塞、同步等待或计时/超时等)。
原理:
1、多线程多核编程,消除cpu瓶颈。
2、采用IOCP或epoll,利用状态监测和通知方式,消除网络I/O阻塞瓶颈。
3、采用事件驱动或异步消息机制,可以消除不必要的等待操作。
4、如果是Linux,可以采用AIO来消除磁盘I/O阻塞瓶颈。
5、在事件驱动框架或异步消息中统一处理timer事件,变同步为异步,而且可以在一个线程处理无数timer事件。
6、深入分析外部的阻塞来源,消除它。
比如数据库查询较慢,导致服务器处理较慢,并发数上不去,这时就要优化数据库性能。
7、如果与某个其他server通信量很大,导致性能下降较多。
可以考虑把这两个server放在一个主机上,采用共享内存的方式来做IPC通信,可以大大提高性能。

6. 服务器的并发是什么意思,怎么计算的!

服务器并发指的是多个用户同时访问数据库中的同一字段的行为。这样的用户行回为对于服务器的答性能是一种考验。
但是,再好的服务器也有自己的性能上限,当并发用户数过多的时候,再好的服务器也支持不住。事实上,我们在生活中经常能遇到由于并发用户过多而导致的系统缓慢甚至瘫痪现象。比方说,很多使用过那些在线考试报名系统的朋友都会发现,半夜登录系统报名比白天登录系统报名要容,网页反应速度也要快一些,这就是由于晚上的并发用户数比较小的原因。
对于IT运维人员来说服务器并发是恐怖的,因为服务器的最大用户并发数并不是IT运维人员所能控制的,我们能做到的只是采用各种手段来提升系统的性能,提升服务器的性能利用率。

7. 个推服务器的容量如何,能支持多少并发量呢

目前个推的单台服务器并发量是500万条的,能支持亿量级的消息秒级送达的。

8. 如何提高服务器并发能力

有什么方法衡量服务器并发处理能力

1. 吞吐率

吞吐率,单位时间里服务器处理的最大请求数,单位req/s

从服务器角度,实际并发用户数的可以理解为服务器当前维护的代表不同用户的文件描述符总数,也就是并发连接数。服务器一般会限制同时服务的最多用户数,比如apache的MaxClents参数。

这里再深入一下,对于服务器来说,服务器希望支持高吞吐率,对于用户来说,用户只希望等待最少的时间,显然,双方不能满足,所以双方利益的平衡点,就是我们希望的最大并发用户数。

2. 压力测试

有一个原理一定要先搞清楚,假如100个用户同时向服务器分别进行10个请求,与1个用户向服务器连续进行1000次请求,对服务器的压力是一样吗?实际上是不一样的,因对每一个用户,连续发送请求实际上是指发送一个请求并接收到响应数据后再发送下一个请求。这样对于1个用户向服务器连续进行1000次请求, 任何时刻服务器的网卡接收缓冲区中只有1个请求,而对于100个用户同时向服务器分别进行10个请求,服务器的网卡接收缓冲区最多有100个等待处理的请求,显然这时的服务器压力更大。

压力测试前提考虑的条件

并发用户数: 指在某一时刻同时向服务器发送请求的用户总数(HttpWatch)
总请求数
请求资源描述
请求等待时间(用户等待时间)
用户平均请求的等待时间
服务器平均请求处理的时间
硬件环境
压力测试中关心的时间又细分以下2种:

用户平均请求等待时间(这里暂不把数据在网络的传输时间,还有用户PC本地的计算时间计算入内)
服务器平均请求处理时间
用户平均请求等待时间主要用于衡量服务器在一定并发用户数下,单个用户的服务质量;而服务器平均请求处理时间就是吞吐率的倒数,一般来说,用户平均请求等待时间 = 服务器平均请求处理时间 * 并发用户数

怎么提高服务器的并发处理能力

1. 提高CPU并发计算能力

服务器之所以可以同时处理多个请求,在于操作系统通过多执行流体系设计使得多个任务可以轮流使用系统资源,这些资源包括CPU,内存以及I/O. 这里的I/O主要指磁盘I/O, 和网络I/O。

多进程 & 多线程

多执行流的一般实现便是进程,多进程的好处可以对CPU时间的轮流使用,对CPU计算和IO操作重叠利用。这里的IO主要是指磁盘IO和网络IO,相对CPU而言,它们慢的可怜。

而实际上,大多数进程的时间主要消耗在I/O操作上。现代计算机的DMA技术可以让CPU不参与I/O操作的全过程,比如进程通过系统调用,使得CPU向网卡或者磁盘等I/O设备发出指令,然后进程被挂起,释放出CPU资源,等待I/O设备完成工作后通过中断来通知进程重新就绪。对于单任务而言,CPU大部分时间空闲,这时候多进程的作用尤为重要。

多进程不仅能够提高CPU的并发度。其优越性还体现在独立的内存地址空间和生命周期所带来的稳定性和健壮性,其中一个进程崩溃不会影响到另一个进程。

但是进程也有如下缺点:

fork()系统调用开销很大: prefork
进程间调度和上下文切换成本: 减少进程数量
庞大的内存重复:共享内存
IPC编程相对比较麻烦

9. javaWeb如何提高并发数

  1. 对Collection、Map接口的类对象初始化时要先分配合理的空间大小,同时还要按照自已的实际需求选择合适的对象。

2.优化循环体

循环是比较重复运行的地方,如果循环次数很大,循环体内不好的代码对效率的影响就会被放大而变的突出。

3.少用new初始化一个实例

尽量少用new来初始化一个类的实例,当一个对象是用new进行初始化时,其构造函数链的所有构造函数都被调用到,所以new操作符是很消耗系统资源的,new一个对象耗时往往是局部变量赋值耗时的上千倍。同时,当生成对象后,系统还要花时间进行垃圾回收和处理。当new创建对象不可避免时,注意避免多次的使用new初始化一个对象。尽量在使用时再创建该对象,另外,应该尽量重复使用一个对象,而不是声明新的同类对象。一个重用对象的方法是改变对象的值,如可以通过setValue之类的方法改变对象的变量达到重用的目的。

4 .选择合适的方法调用:

在Java中,一切都是对象,如果有方法(Method)调用,处理器先要检查该方法是属于哪个对象,该对象是否有效,对象属于什么类型,然后选择合适的方法并调用。可以减少方法的调用,不影响可读性等情况下,可以把几个小的方法合成一个大的方法。另外,在方法前加上final,private关键字有利于编译器的优化。

5.异常处理技巧

异常是Java的一种错误处理机制,对程序来说是非常有用的,但是异常对性能不利。抛出异常首先要创建一个新的对象,并进行相关的处理,造成系统的开销,所以异常应该用在错误处理的情况,不应该用来控制程序流程,流程尽量用while,if等处理。在不是很影响代码健壮性的前提下,可以把几个try/catch块合成一个。

6 .尽量使用局部变量

尽量使用局部变量,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack) 中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。

7.同步处理技巧

同步主要出现在多线程的情况,为多线程同时运行时提供对象数据安全的机制,多线程是比较复杂话题,应用多线程也是为了获得性能的提升,应该尽可能减少同步。

另外,如果需要同步的地方,可以减少同步的代码段,如只同步某个方法或函数,而不是整个代码。

8 .尽可能的使用Java自身提供的API

Java的API一般都做了性能的考虑,如果完成相同的功能,优先使用API而不是自己写的代码,如数组复制。

9 .尽量减少I/O操作

输入/输出(I/O)包括很多方面,我们知道,进行I/O操作是很消耗系统资源的。程序中应该尽量少用I/O操作。使用时可以注意: . 合理控制输出函数System.out.println()对于大多时候是有用的,特别是系统调试的时候,但也会产生大量的信息出现在控制台和日志上,同时输出时,有序列化和同步的过程,造成了开销。

特别是在发行版中,要合理的控制输出,可以在项目开发时,设计好一个Debug的工具类,在该类中可以实现输出开关,输出的级别,根据不同的情况进行不同的输出的控制。

10 .尽量使用缓存

读写内存要比读写硬盘上的文件要快很多,应尽可能使用缓冲,以便直接从内存中读取数据。尽可能使用带有Buffer的类代替没有Buffer的类,如可以用BufferedReader 代替Reader,用BufferedWriter代替Writer来进行处理I/O操作。

同样可以用BufferedInputStream代替InputStream都可以获得性能的提高

11 .尽量不使用同步:

Servlet是多线程的,以处理不同的请求,基于前面同步的分析,如果有太多的同步就失去了多线程的优势了。

12.不用保存太多的信息在HttpSession中

很多时候,存储一些对象在HttpSession中是有必要的,可以加快系统的开发,如网上商店系统会把购物车信息保存在该用户的Session中,但当存储大量的信息或是大的对象在会话中时,是有害的,特别是当系统中用户的访问量很大,对内存的需求就会很高。具体开发时,在这两者之间应作好权衡。

13.清除SESSION:

通常情况,当达到设定的超时时间时,同时有些Session没有了活动,服务器会释放这些没有活动的Session,.. 不过这种情况下,特别是多用户并访时,系统内存要维护多个的无效Session。当用户退出时,应该手动释放,回收资源,实现如下:..
HttpSession theSession = request.getSession();
// 获取当前Session
if(theSession != null){
theSession.invalidate(); // 使该Session失效
}

14 .缓存Home接口

EJB库使用Enterprise Bean 的客户端通过它的Home接口创建它的实例。客户端能通过JNDI访问它。服务器通过Lookup方法来获取。
JNDI是个远程对象,通过RMI方式调用,对它的访问往往是比较费时的。所以,在设计时可以设计一个类专门用来缓存Home接口,在系统初始化时就获得需要的Home接口并缓存,以后的引用只要引用缓存即可。

15 .使用快速度的Jdbc驱动

JDBC API包括两种实现接口形式,一种是纯Java实现的驱动,一种利用ODBC驱动和数据库客户端实现,具体有四种驱动模式:

第一类:JDBC-ODBC桥,再加上ODBC驱动程序。
JDBC驱动程序是JDBC-ODBC桥再加上一个ODBC驱动程序。建议第一类驱动程序只用于原型开发,而不要用于正式的运行环境。桥接驱动程序由Sun提供,它的目标是支持传统的数据库系统。Sun为该软件提供关键问题的补丁,但不为该软件的最终用户提供支持。一般地,桥接驱动程序用于已经在ODBC技术上投资的情形,例如已经投资了Windows应用服务器。
尽管Sun提供了JDBC-ODBC桥接驱动程序,但由于ODBC会在客户端装载二进制代码和数据库客户端代码,这种技术不适用于高事务性的环境。另外,第一类JDBC驱动程序不支持完整的Java命令集,而是局限于ODBC驱动程序的功能,这种驱动方式也叫胖客户,主要用于低并发请求,大数据量传输的应用。

第二类:本机API,部分是Java的驱动程序。
JDBC驱动程序是本机API的部分Java代码的驱动程序,用于把JDBC调用转换成主流数据库API的本机调用。这类驱动程序也存在与第一类驱动程序一样的性能问题,即客户端载入二进制代码的问题,而且它们被绑定了特定的平台。
第二类驱动程序要求编写面向特定平台的代码,主流的数据库厂商,例如Oracle和IBM,都为它们的企业数据库平台提供了第二类驱动程序,使用这些驱动程序的开发者必须及时跟进不同数据库厂商针对不同操作系统发行的各个驱动程序版本。
另外,由于第二类驱动程序没有使用纯Java的API,把Java应用连接到数据源时,往往必须执行一些额外的配置工作。很多时候,第二类驱动程序不能在体系结构上与大型主机的数据源兼容;即使做到了兼容,效果也是比较差。

第三类:面向数据库中间件的纯Java驱动程序。
JDBC驱动程序是面向数据库中间件的纯Java驱动程序,JDBC调用被转换成一种中间件厂商的协议,中间件再把这些调用转换到数据库API。第三类JDBC驱动程序的优点是它以服务器为基础,也就是不再需要客户端的本机代码,这使第三类驱动程序要比第一、二两类快。另外,开发者还可以利用单一的驱动程序连接到多种数据库。

第四类:直接面向数据库的纯Java驱动程序。
JDBC驱动程序是直接面向数据库的纯Java驱动程序,即所谓的“瘦”(thin)驱动程序,它把JDBC调用转换成某种直接可被DBMS使用的网络协议,这样,客户机和应用服务器可以直接调用DBMS服务器。对于第四类驱动程序,不同DBMS的驱动程序不同。因此,在一个异构计算环境中,驱动程序的数量可能会比较多。但是,由于第四类驱动程序具有较高的性能,能够直接访问DBMS,所以这一问题就不那么突出了, 这种驱动方式,主要用于高并发,低数据量请求的应用中。

16.使用Jdbc链接池

为了提高访问数据库的性能,我们还可以使用JDBC 2.0的一些规范和特性,JDBC是占用资源的,在使用数据库连接时可以使用连接池Connection Pooling,避免频繁打开、关闭Connection。而我们知道,获取Connection是比较消耗系统资源的。
Connection缓冲池:当一个应用程序关闭一个数据库连接时,这个连接并不真正释放而是被循环利用,建立连接是消耗较大的操作,循环利用连接可以显著的提高性能,因为可以减少新连接的建立。

一个通过DataSource获取缓冲池获得连接,并连接到一个CustomerDB数据源的代码演示如下:
Context ctx = new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup(“jdbc/CustomerDB”);
Connection conn = dataSource.getConnection(“password”,”username”);

17.缓存DataSorce

一个DataSource对象代表一个实际的数据源。这个数据源可以是从关系数据库到表格形式的文件,完全依赖于它是怎样实现的,一个数据源对象注册到JNDI名字服务后,应用程序就可以从JNDI服务器上取得该对象,并使用之和数据源建立连接。
通过上面的例子,我们知道DataSource是从连接池获得连接的一种方式,通过JNDI方式获得,是占用资源的。
为了避免再次的JNDI调用,可以系统中缓存要使用的DataSource。

18.即时关闭使用过的资源

互联网应用系统一般是并发的系统,在每次申请和使用完资源后,应该释放供别人使用,使用完成后应该保证彻底的释放。

19 .架构选型

CoreMediaCMS将整个应用分成四成架构,每一层都可以独立于其他层而正常运行,每一层都可以分布式布署,极大的提高了应用系统的稳定性、可扩展性、支持高并发的要求,每一次之前通过中间件Corba进行稳定的传输数据。

20 .开发框架的选型

充分利用开源框架,可以大大提高开发效率。很多初级开发者,都采用DB JavaBean JSP这种初级的开发模式,而现在主要使用Struts、Spring等MVC开发框架。

常用开发框架构选型有:

Struts、Spring、Webwork等。

天极传媒选择的开发框架是:Struts Spring iBatis,在这个开发框架里,充分利用了Struts、Spring各自己的优点,可以选择StutsMVC,也可以选择Spring MVC。

21.分级存储

1)数据库数据分级存储:

将经常访问的数据和访问频度低的数据,分别存放到不同的分区,甚至存放到不同的数据库服务器,以便合进分配硬盘I/O及系统I/O。

2)网站内容发布之后,分级存储:

任何一个大型的网站,一般都有海量的内容,为了提高访问效率,应搭建分级存储体系,根据应用的重要性和访问并发要求,将这些内容分级存储,同时将静态内容中的静态页面文件、图片文件、下载文件分不同的Web服务器访问,降低I/O争用,提高访问效率,同时让数据存储、管理、备份更加清晰。

22 .页面静态化

一个大型网站,既有静态内容,也有动态内容。静态内容,直接通过Apache或者Squid访问,效率高,稳定可靠,更多的是受服务器等硬件设备的I/O吞吐量、网络环境及页面代码本身质量限制,不受应用系统及数据库性能限制,这些内容往往访问速度和效率不会有较大的问题。

而动态内容,除了受硬件设备I/O、操作系统I/O及内容、网络环境及页面代码的影响,还要受应用服务器和数据库性能影响,因此,这部份内容,要尽可能作静态化或者伪静态,并采用缓存技术,将其缓存,以减少对应用服务器和数据库服务器的操作次数,提高用户访问效率和稳定性。

23.缓存策略

对于构建的业务系统,如果有些数据要经常要从数据库中读取,同时,这些数据又不经常变化,这些数据就可以在系统中缓存起来,使用时直接读取缓存,而不用频繁的访问数据库读取数据。
缓存工作可以在系统初始化时一次性读取数据,特别是一些只读的数据,当数据更新时更新数据库内容,同时更新缓存的数据值。

例如:在CMS2005系统中,我们将很少发生变化的网站节点树数据,缓存在客户端,当用户登录时,一次性读入到客户端缓存起来,以后编辑在使用时,不用再从数据库中读取,大大提高了应用系统的访问速度。

当然,也可以将数据库中重复访问的数据缓存在应用服务器内存中,减少对数据库的访问次数,Java常用的缓存技术产品有:MemoryCache、OSCache等。

10. 如何测试服务器支持的最大并发连接数

更改服来务端的I/O模型吧,这明显是服自务端设计的问题。
你这样设计上线使用的话,服务器开销太大了(主要是线程切换的开销)。

//--------------------
Listen(socket,5),跟这个有一定关系。

int listen(int sockfd, int backlog); 第二个参数是你监听客户端的最大个数,如连接到主机上的客户端超过其数listen则会返回一个错误代号。

backlog你可以设置大一点,如100之类的。

建议使用I/O模型吧,不要使用建立新线程来处理。
(你使用建立新线程的话,会发现每个进程所建立的最大线程数量是有一个限制的)

阅读全文

与服务器并发数怎么提升相关的资料

热点内容
豆腐皮废水 浏览:901
净可家空气净化器多少钱 浏览:129
空气能有水垢多久清理 浏览:429
大型净水机耗电量是多少 浏览:704
环保500头猪大概多少污水 浏览:679
马桶水垢清除剂 浏览:825
档案室空气净化器多少钱一台 浏览:212
环氧树脂行业应用网 浏览:943
青海废水cod测定仪怎么样 浏览:950
污水处理职考试试题 浏览:409
工厂养殖水处理预算 浏览:122
特种废水处理工程1000字论文 浏览:849
树脂搅拌叶轮选择 浏览:304
超滤反洗加药装置 浏览:498
废料超滤膜 浏览:36
兰博基尼空调滤芯在什么位置 浏览:958
净化器绿灯闪烁是什么原因 浏览:753
车载饮水机细管子什么用 浏览:346
污水回流有什么用处 浏览:163