http://flyash.itcao.com/post_556.html

之前使用了apache的ab和webbench,都各有特点,只是测试自己的vps时200个并发时返回成功的很少,同时访问网站是可以打开的,觉得可能是不是自己系统这里网络链接造成的,又找找其它的测试工具,看到了这个http_load,下载安装

wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
tar -zxvf http_load-12mar2006.tar.tar
cd http_load-12mar2006
mkdir -p /usr/local/man/man1
make && make install
http_load -p 100 -s 60 urllist

默认的安装目录在/usr/local/man/man1,需先建立,否则安装时报错,或者自己编辑Makefile文件,修改安装目录

同时建立urllist文件,包含需要测试url列表,一行一个,务必不要包含空行,否则执行时报unknow protocol -错误

参数p设置并发连接数,s设置连接时间

可以参考官方的例子
http://www.acme.com/software/http_load/

 

http://www.cnblogs.com/aiwa/archive/2011/09/15/2177577.html

 

 

http_load以并行复用的方式运行,用以测试webx服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机高斯,还可以测试https类的网站请求。

 

http_load用法:

 

usage:  ./http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file]

 

            -parallel N | -rate N [-jitter]

 

            -fetches N | -seconds N

 

            -cmd get(|post)

 

            url_file

 

One start specifier, either -parallel or -rate, is required.

 

One start specifier, either -cmd get or -cmd post, is required.

 

One end specifier, either -fetches or -seconds, is required.

 

注:

 

常用方式:./http_load –r 200 –s 900 http.txt 2>2.log 1>1.txt

 

模拟qps200,连续压测15分钟,错误日志输出到2.log文件中,最终的压测结果输出到1.txt文件中。

 

结果分析:

 

1. 10799998 fetches, 1020 max parallel, 3.17224e+10 bytes, in 43200 seconds//说明测试中运行了10799998个请求,最大的并发进程数是1020,总计传输的数据是3.17224e+10 bytes,运行的时间是432000秒

 

2. 2937.26 mean bytes/connection//说明每一连接平均传输的数据量是(3.17224e+10)/10799998=2937.26

 

3. 250 fetches/sec, 734315 bytes/sec//说明每秒的响应请求为250,每秒传递的数据为734315 bytes

 

4. msecs/connect: 0.194116 mean, 30.207 max, 0.125 min//说明每链接的平均响应时间是0.194116 msecs,最大的响应时间是30.207msecs,最小的响应时间是0.125 msecs

 

5. msecs/first-response: 22.9355 mean, 59996.9 max, 0.07 min//说明每个请求的平均响应时间是22.9355msecs,最大的响应时间是30.207msecs,最小的响应时间是0.07msecs。

 

6. 23088 timeouts//运行中有23088个请求超时

 

7. 27503 bad byte counts//同一个http请求,不一样的结果的个数。

 

8. HTTP response codes://说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。

 

  code 200 – 10772495

 

 

 

这里主要看的参数有fetches/sec,msecs/first-response。要统计timeout的比例:timeouts/ fetches。这里的超时比例就是:23088/10799998=0.213%。

 

同时还要服务器端的cpu,mem和load。通常load数/cpu个数<=1是比较好的。

 

 

 

关于超时:http_load默认的超时时间为10s,这里的超时可以自己定义,但必须是int整数,不能是浮点数。

 

 

 

关于每秒种的请求数-r,如果pd有给期望的pv或uv,那么可大概算出qps,一般

 

qps=pv/(60×60×6)一般,每天按照6个小时算。如果没有期望值和参考值,那么就要去一个个试,看r为多少时,系统的性能达到最大值,要试出一个临界值。

 

注:r就代表qps,即结果中的参数fetches/sec值。如果r太大时,系统可能会压挂或者不稳定,此时qps跟r的差别较大,压测结果不具备参考性,要适当降低r值。

=======================================================

http://bbs.csdn.net/topics/340199550

官方文档指出,WebLogic 9 / WebLogic 10 的线程池是自调优的,并且在WebLogic 9的时候,通过修改config.xml可以修改默认线程池的最小值、最大值,但是很麻烦。到了WebLogic 10gR3,连修改config.xml的办法都给取消了。

 

但是,可以通过在启动脚本增加如下参数,可以指定默认线程池的最小值、最大值:

-Dweblogic.threadpool.MinPoolSize=100

-Dweblogic.threadpool.MaxPoolSize=500

http://www.blogjava.net/lhbjava/archive/2008/09/05/227111.html

 

Ø         更改内存分配参数(以内存为2G为例)

bea"weblogic81"common"bin"commENV.cmd文件中

set MEM_ARGS=-Xms128m -Xmx256m内存加大,设置为:

set MEM_ARGS=-Xms1024m –Xms1024m

然后在服务的startWeblogic.cmd中查找

call "%WL_HOME%"common"bin"commEnv.cmd",如果在这句的后面无内存参数的设置则以上面的设置为准。如果在这句的后面加上

set MEM_ARGS=-Xms1024m –Xms1024m,则以这句为准。

    Ø        适当调整了BEA Weblogic的线程数大小

weblogic server的线程数是一个比较重要的参数。线程数指的是weblogic server的最大并发处理操作数量。但是并不是说增加线程数就以为着能够增加性能,能够处理更多的事情。因为线程耗费资源,不必要的线程数增加反而会降低性能。

调整线程数时,在左边菜单的myserver上点击右键,选择查看执行队列,然后点击weblogic.kernel.Default。将线程计数最大线程数最小线程数设置为相同的数值,线程数增加设为0,以减少线程数增减带来的性能消耗。

Ø         Weblogic监控

http://ip:端口/console,输入用户名、密码对当前的服务进行监控。

登陆后会看到平台的左边有一树目录,打开mydomain下的servers,就会看到我们要监控的服务了。单击服务,

通过Monitoring—>General—> Monitor all Active Queues对线程进行监控制。

通过Monitoring—>PerfformanceThroughput:Queue LengthMemory Usage:进行监控。

http://blog.csdn.net/fengbaoxp/article/details/4663599

 

 

   我们的应用在tomcat上一直运行正常,移植到weblogic9上,同样的应用会因为获取不到数据库连接的错误而崩溃,经同事研究发现原因是weblogic9默认配置提供的可用连接数太少(4)所致,可是weblogic9控制台又没有提供修改链接数的功能,经多方请教,最后找到解决方法如下:

1、修改weblogic domain的config.xml文件,在对应位置加入红色标注的两行内容:

    <server>
          <name>admserver</name>
          <self-tuning-thread-pool-size-min>5</self-tuning-thread-pool-size-min>
          <self-tuning-thread-pool-size-max>15</self-tuning-thread-pool-size-max>
 
          ...
     </server>

2、在startweblogic.cmd脚本中加入一下java启动参数:

     -Dweblogic.configuration.schemaValidationEnabled=false

 

经测试32为windows操作系统上,同样硬件条件下:weblogic9支持的最大线程数约为2900个,而tomcat6支持最大线程数约为1100多。

 ==========================================================

http://hi.baidu.com/zekbtmzzpqbkqud/item/42be4f49f99b6897823ae12c

JProfiler 5.1.2破解安装与使用

 

安装

因为我在网上找不到5.1.2的版本,找到了JProfiler5.1.4,

下载地址:http://download.ej-technologies.com/jprofiler/jprofiler_windows_5_1_4.zip,为绿色版,解压后即可

破解文件:JProfilter.512crack.zip 下载地址:http://dl.javaeye.com/topics/download/a7f22508-bdce-38a1-91ab-37da1687e621

如果没有请到此处下载http://luanma.javaeye.com/blog/183827

注 册 方 法: 
1、解压缩到[targetdir]/bin目录下,其中要覆盖两个文件夹。 
2、在命令行模式下执行命令: “java -cp . Keygen” 就能获取到注册码。

使用方法网上比较多,可以参考以下地址:

JProfiler学习笔记 http://www.picai8.com/tech/article/100210.html

=============================================================

http://www.cnitblog.com/rd416/archive/2008/08/07/47724.aspx

linux 上tomcat 服务器抛出socket异常“文件打开太多”的问题 
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60)
at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:407)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:70)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

原本以为是tomcat的配置或是应用本身的问题,"谷歌"一把后才发现,该问题的根本原因是由于系统文件资源的限制导致的。

具体可以参考http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html
的说明。具体的解决方式可以参考一下:
1。ulimit -a 查看系统目前资源限制的设定。
   [root@test security]# umlimit -a 
-bash: umlimit: command not found
[root@test security]# ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 7168
virtual memory        (kbytes, -v) unlimited
[root@test security]# 
通过以上命令,我们可以看到open files 的最大数为1024
那么我们可以通过一下命令修改该参数的最大值

2. ulimit -n 4096
[root@test security]# ulimit -n 4096
[root@test security]# ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 4096
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 7168
virtual memory        (kbytes, -v) unlimited

这样我们就修改了系统在同一时间打开文件资源的最大数,基本解决以上问题。

以上部分是查找网络上的解决方法。设置了之后段时间内有作用。

 

后来仔细想来,问题还是要从根本上解决,于是把以前的代码由认真地看了一遍。终于找到了,罪魁祸首。

在读取文件时,有一些使用的BufferedReader 没有关闭。导致文件一直处于打开状态。造成资源的严重浪费。

修改之后的简单代码如下:

 

public void test(){
    BufferedReader reader 
=null;
    
try{
        reader 
= 读取文件;
        String line 
= "";
        
while( ( ine=reader.readLine())!=null){
           其他操作
        }

    } 
catch (IOException e){
        System.out.println(e);
    } 
finally{  
         
if(reader !=null){
                
try {
                    reader.close();
                } 
catch (IOException e) {
                      e.printStackTrace();
                }
          }
    }

}

 

 

 

 

以上只是我的个人见解,希望对大家有所帮助。

 

http://zxs19861202.iteye.com/blog/423174

最近随着网站访问量的提高把web服务器移到linux下了,在移服务器的第二天,tomcat频繁的报

 

java.net.SocketException: Too many open files错误,错误日志达到了100多兆,郁闷了,windows上运行了很长

 

时间都没出现这个错误,后来才知道linux对进程的打开文件数是有限制的。

 

用命令ulimit -a查看

[root@test security]# ulimit -a 
core file size        (blocks, -c) 0 
data seg size         (kbytes, -d) unlimited 
file size             (blocks, -f) unlimited 
max locked memory     (kbytes, -l) unlimited 
max memory size       (kbytes, -m) unlimited 
open files                    (-n) 1024 
pipe size          (512 bytes, -p) 8 
stack size            (kbytes, -s) 8192 
cpu time             (seconds, -t) unlimited 
max user processes            (-u) 7168 
virtual memory        (kbytes, -v) unlimited 
[root@test security]# 
通过以上命令,我们可以看到open files 的最大数为1024

 

对于并发量比较大的网站这个限制是有些捉襟见肘的,所以我通过这个命令

 

ulimit -n 4096 
把打开文件数的上限设为了4096,这下好了,项目又稳定了

 

没想到过两天后又重新出这个错误了,郁闷,两个小时报一次,报之后就挂掉了

 

在重新用ulimit -a查看,发现open files    (-n) 1024 又变回了1024了,

 

报这个错误就在我那次登陆更新之后又报的,原来ulimit -n 4096 命令只能临时的改变open files  的值,当

 

 

重新登陆后又会恢复,所以需要永久设置open files  的值才行啊,

 

 

用ulimit -n 修改open files 总是不能保持。所以用下面一个简单的办法更好些。

修改/etc/security/limits.conf 添加如下一行:

* - nofile 1006154

修改/etc/pam.d/login添加如下一行

session required /lib/security/pam_limits.so

 

这次永久修改后程序就再没那个问题了,一直稳定运行。

 

另外遇到这个问题这后还需要检查我们的程序对于操作io的流是否在操作完之后关闭,这才是从最更本上的解决。

 

http://xiaoxinshome.iteye.com/blog/616965

本文基于tomcat6.0.20版本

1.context.xml方式

 

在我们的WebRoot目录下,就是和WEB-INF同级的目录下,新建一个META-INF的目录(假如不存在),在该目录下创建一个context.xml文件,并且在context.xml文件当添加以下的配置信息:

Xml代码   weblogic线程数修改,tomcat,http_load,jprofiler,压力测试jmeter;java.net.SocketException: Too many open files
    





            
第一次性能测试---http_load
  1. <Context>  
  2.     <Resource name="jdbc/DSjwzhxt" auth="Container" type="javax.sql.DataSource"  
  3.         maxActive="20" maxIdel="10" maxWait="1000" username="qbuser"  
  4.         password="qbxt" driverClassName="oracle.jdbc.driver.OracleDriver"  
  5.         url="jdbc:oracle:thin:@192.168.1.3:1521:qbdb">  
  6.     </Resource>  
  7. </Context>  

 其中:
name 表示指定的jndi名称
auth 表示认证方式,一般为Container
type 表示数据源床型,使用标准的javax.sql.DataSource
maxActive 表示连接池当中最大的数据库连接
maxIdle 表示最大的空闲连接数
maxWait 当池的数据库连接已经被占用的时候,最大等待时间
logAbandoned 表示被丢弃的数据库连接是否做记录,以便跟踪
username 表示数据库用户名
password 表示数据库用户的密码
driverClassName 表示JDBC DRIVER
url 表示数据库URL地址

 

注意,这里你配置的name值要和程序中使用的是一样的,比如按照这个例子,程序就应该是这样的

Java代码   weblogic线程数修改,tomcat,http_load,jprofiler,压力测试jmeter;java.net.SocketException: Too many open files
    





            
第一次性能测试---http_load
  1. private static String gENV = "java:comp/env/";  
  2. Context ctx = new InitialContext();  
  3.       Context envContext = (Context)ctx.lookup(gENV);  
  4.       DataSource ds = (DataSource) envContext.lookup("jdbc/DSjwzhxt");  
  5.       Connection conn = ds.getConnection();  

 

这种配置方式,tomcat启动的时候会在tomcat-6.0.20\conf\Catalina\localhost下自动建立一个和应用同名的xml文件,内容和context.xml是一样的。

 

其实可以不用context.xml,直接在tomcat-6.0.20\conf\Catalina\localhost下建立一个和应用同名的xml文件,然后里面的内容和context.xml一样也行。

 

2.在server.xml文件中配置数据源

在host节点内添加context节点

Java代码   weblogic线程数修改,tomcat,http_load,jprofiler,压力测试jmeter;java.net.SocketException: Too many open files
    





            
第一次性能测试---http_load
  1. <Context path="/bdbj" docBase="bdbj" reloadable="true" crossContext="true">  
  2.         <Resource name="jdbc/DSjwzhxt" auth="Container" type="javax.sql.DataSource" maxActive="10" maxIdle="30"  
  3.                 maxWait="10000" username="stuser" password="****"  
  4.                     driverClassName="oracle.jdbc.driver.OracleDriver"  
  5.         url="jdbc:oracle:thin:@192.168.1.11:1521:hyperic"/>  
  6. </Context>  

 效果如下图

weblogic线程数修改,tomcat,http_load,jprofiler,压力测试jmeter;java.net.SocketException: Too many open files
    





            
第一次性能测试---http_load

 

 

 

相关文章:

  • 2022-12-23
  • 2022-02-07
  • 2021-04-13
  • 2022-12-23
  • 2022-12-23
  • 2022-01-30
  • 2022-03-01
猜你喜欢
  • 2022-12-23
  • 2021-06-11
  • 2021-10-11
  • 2021-07-25
  • 2022-12-23
  • 2021-12-24
  • 2021-04-15
相关资源
相似解决方案