Openfire性能优化与压力测试小结

Openfire配置:

Ubuntu安装Openfire后性能极低,压力测试只能到4000在线用户数。

第一步 修改Openfire运行环境

通过ps -aux | grep openfire查看openfire服务能观察到启动命令为:

/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -server -DopenfireHome=/usr/share/openfir -Dopenfire.lib.dir=/usr/share/openfire/lib -classpath /usr/share/openfire/lib/startup.jar -jar /usr/share/openfire/lib/startup.jar

首先看到这里用的JVM是openjdk提供的,性能不行,因此先kill掉这个进程(如果不是使用Openjdk就不需要这个操作了)。Kill掉再执行ps看看是不是真正被改掉了,然后切换到root下执行/etc/init.d/openfire start。再次查看已经切换成自己的JDK路径了,前提是配置过JDK。

/home/david/java/jdk1.8.0_05//bin/java -server -DopenfireHome=/usr/share/openfire -Dopenfire.lib.dir=/usr/share/openfire/lib -classpath /usr/share/openfire/lib/startup.jar -jar /usr/share/openfire/lib/startup.jar

第二步 epoll方式修改:

为提高性能需要更改启动命令为NIO支持epoll,需要修改/etc/init.d/openfire脚本文件。将DAEMON_OPTS改为

DAEMON_OPTS="$DAEMON_OPTS -server -Xms3072m -Xmx4096m -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -DopenfireHome=${DAEMON_DIR} \

-Dopenfire.lib.dir=${DAEMON_LIB} -classpath ${DAEMON_LIB}/startup.jar\

-jar ${DAEMON_LIB}/startup.jar"

主要加入了-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider这个选项,注意这里还修改了jvm内存使用大小。

tsung压力测试:

第一步 修改打开最大文件数目

不做任何修改的主机安装tsung做压力测试时发现最多只能到达1000左右的在线用户数,错误为emfile执行ulimit –n查看为1024,意思是打开的文件太多了,默认为1024个。执行ulimit –n 65535,这个65535随便一个大点的数字就好。长期修改需要修改/etc/security/limits.conf,加入:

root - nofile 65535

注:root必须明确写上root不能使用*。

第二步 修改端口范围

继续做压力测试发现到达28000左右压力就上不去了,错误为eaddrinuse,这个时候是端口不够用了。需要修改/etc/sysctl.conf,加入:

net.ipv4.ip_local_port_range = 1024 65000

将端口可分配的范围增加到6W多个,执行sysctl –p立即生效,通过sysctl –a | grep range查看是否已经有变化。此时再去做压力测试就能发现在线用户数已经到达了6W个。

第三步 tsung集群

一台机模拟6W用户在线就已经到极限了,此时需要多台tsung测试机来进行测试。每台测试服务器上需要安装相同的erlang和tsung版本,并且通过root能够无密码登录(root可能非必须)。另外特别注意的一点是机器名称不能使用lc-optex之类的,中间的“-”在erl中会导致无法连接,直接取名kf2lc这样就OK了。

以三台测试机(可以用虚拟机采用桥接模式)为例,假设机器名称为kf2test01、kf2test02、kf2test03,IP分别对应为172.28.23.180、172.28.23.181、172.28.23.182。

分别在在各机器的/etc/hosts上加入:

172.28.23.180 kf2test01

172.28.23.181 kf2test02

172.28.23.182 kf2test03

Kf2test01切换到root后执行ssh kf2test02,如果无密码登录就OK了,提示输入密码的话需要改为无密码登录。其它机器做相同的连接测试,保证能够相互无密码登录。

此时ulimit –n查看远端服务器最大文件数限制仍然为1024,会导致集群的从服务器最大只能创建1000个左右的模拟用户,需要在/etc/profile中加入:

ulimit -SHn 65535

在tsung测试压力前可以通过执行erl来测试集群是否成功,shell中执行erl:

>erl -rsh ssh -sname root -setcookie mycookie

Eshell V5.8.5 (abort with ^G)

([email protected])1>slave:start(kf2test02,root,"-setcookie mycookie").

如果返回ok则表示成功,如下:

{ok,[email protected]}

无法集群则会半天无反应,最后显示{error,timeout}。

配置好tsung后,修改jabber.xml配置:

<clients>

<client host="kf2test01" use_controller_vm="false" maxusers="60000">

<ip value="172.28.23.180"/>

</client>

<client host="kf2test02" use_controller_vm="false" maxusers="60000">

<ip value="172.28.23.181"/>

</client>

<client host="kf2test03" use_controller_vm="false" maxusers="60000">

<ip value="172.28.23.182"/>

</client>

</clients>

然后执行tsung –f jabber.xml进行集群压力测试。通过这样方式测试理论上能达到18W模拟用户。以下是测试输出报告:

Openfire性能优化的一些思考:
1.现在服务器连接并发量才1400多,通过加入连接管理器(CONNECTION MANAGER)实现大并发,前端需要加入负载均衡服务器(Load Banlancer)或DNS来实现分流。
2.Openfire直接连接数据库,需要加入memcached作为数据库缓存。
3.Openfire集群据说有性能问题,需要找到瓶颈。
4.服务器最终应选为CentOS,而非ubuntu。

时间: 2024-10-15 20:34:03

Openfire性能优化与压力测试小结的相关文章

Apache 深度优化 ab压力测试

网站性能压力了测试是服务器网站性能调优过程中必不可少的一环,只有让服务器处在高压的情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试工具目前最常见的有以下几种:ab.http_load.webbench.siege.ab是Apache自带的压力测试工具,非常实用,可以模拟多线程并发请求,测试服务器负载压力.它不仅可以对Apache服务器进行网站访问压力测试,而且可以对其他类型服务器进行压力测试.ab对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多内存,但却会

Apache网页深入优化——ab压力测试,工作模式

ab压力测是工具 Apache自带压力测试工具ab,简单易用,且可以模拟各种条件对web服务器发起测是请求 ab工具可以直接在web服务器本地发起测是请求,这对于需要了解服务器的处理性能至关重要,因为它不包括数据的网络传输时间以及用户pc本地的计算时间,从而可以通过观测各种时间指标判断web服务器的性能,以便进行参数的优化调整 在进行性能调整优化过程中,可用ab压力测是工具进行优化效果的测试 优化前先使用ab进行压力测试 优化后,重启服务,再使用ab进行压力测试 对比两次测试的结果,看优化效果是

云服务器 性能测试之web压力测试

前言:现在云服务器是主流,成了许多中小型公司的首选服务器,但是云服务器都是虚拟机,所以性能是一大疑问,这里就开始简单介绍云服务器的性能测试,云端web服务器的压力测试. Linux下常用的四款Web服务器压力测试工具(http_load.webbench.ab.siege),这里采用apache自带的ab工具来测试. 1,开始安装apache 前期准备: yum install gcc* -y yum install libtool* -y 1.1,去官网下载 apache,http://htt

网站性能ab命令压力测试

PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试. ApacheBench命令原理: ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp.tomcat.IIS等其它Web服务器的压力.ab命令对

Openfire 性能优化

Openfire  是一个XMPP协议的IM Server. Openfire使用mysql配合它不知所谓几乎无效的的Cache机制就注定无法支撑高并发, 所以第一步,将数据库切换为比较强一点的MongoDB. 但是MongoDB也是有问题的,在高并发时才会发现,MongoDB的锁表十分严重, 经过调查发现,MongoDB也比较坑爹,他是使用“全局锁”的,也就是说,你更新A表的时候,会锁住B表,数据更新后解锁. 所以作为实时查询数据库即使是使用MongoDB的master/slave模式依然不能

VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试

现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑力,纷纷推出了低价VPS,其中突出的代表就是阿里云. 所谓“一分钱一分货”,把VPS当成虚拟主机来卖的如果不是做慈善事业就是超售严重,买回来的VPS到底值不值这个价钱,我们一般需要对VPS主机进行一番性能测试,涉及的项目主要有CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试等等. 本

PHP性能优化简述

先谢慕课网,这里只做理论简述/** * PHP性能优化 * * 1.问题分析 * PHP语法使用不正确 * PHP不擅长的事 * PHP连接的服务不给力 * PHP自身短板 * 其它原因 * 2.PHP项目性能问题占整个项目的性能问题 * PHP性能问题不会超过整个项目性能问题的一般,通常占30%到40%, * 优化整个项目不仅优化PHP性能,整个项目中PHP性能问题只占一部分. * 优化过程: * 1.php语言级的性能优化:快速见到收益 * 2.php周边问题的性能优化:web server

十步完成Web应用程序压力测试(转)

Web 应用程序是决定网站性能的关键,对其进行测试是网站测试的核心.压力测试的目的是测试系统在各种负荷(由并发用户所产生的综合处理量)下的性能和稳定性.为了保证Web 应用程序的压力测试能取得理想的测试效果,压力测试也应该遵循软件工程中软件测试的一般规范.整个测试流程应有文档记录,压力测试应得到相应的重视.需求分析 对不同的系统其压力测试的强度和侧重点也不同.一个用于中小企业内部网和一个要处理大量用户的电子商务站点的负荷量和负荷分布是明显不同的.前者的最大负荷量和负荷分布是可预期的,而且对企事业

压力测试~一套完整的压力测试项目文档

Web压力架构 张占岭 Web压力架构... 1 一 系统性能测试概述... 1 1.1 性能测试概述... 1 1.2 性能测试的指标... 2 1.3 关键点的描述... 2 1.4 性能测试的目的... 2 1.5 测试项目开发规范... 2 二 使用VS压力测试工具进行测试... 3 2.1 性能测试(WebTest). 3 2.1.1 概念... 3 2.1.2 如何建立性能测试... 3 2.1.3 使用CS代码快速建立性能测试... 5 2.1.4 运行当前性能测试... 6 2.