记MPush长链接测试程序调试

mpush长连接压力测试。
394阅读 · 2020-10-30 23:48发布

公司使用了MPush消息推送系统,用于和SDK进行长链接推送消息。

本文将使用改写的mpush-client-java,进行连接测试。

一、修改测试程序代码

下载test分支的源代码,使用IDEA工具打开项目。

找到src/main/java/com.mpush/test路径,Main为启动文件。

编辑文件的mpush的端口、生成devid和userid的规则。参考如下:

public final class Main {

    // 公钥对应服务端的私钥
    private static final String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCghPCWCobG8nTD24juwSVataW7iViRxcTkey/B792VZEhuHjQvA3cAJgx2Lv8GnX8NIoShZtoCg3Cx6ecs+VEPD2fBcg2L4JK7xldGpOJ3ONEAyVsLOttXZtNXvyDZRijiErQALMTorcgi79M5uVX9/jMv2Ggb2XAeZhlLD28fHwIDAQAB";
    // 用于获取MPUSH server的ip:port, 用于负载均衡
    private static final String allocServer = "http://192.168.0.1:8000/";

    public static void main(String[] args) throws Exception {
        //...省略...
        String serverHost = "192.168.0.1";  //mpush服务端ip
        //...省略...
        // 因为要放到多台机器同时执行,所以在用户id处增加随机数
        Random random = new Random();
        int random_num = 0;

        for (int i = 0; i < count; i++) {
            random_num = random.nextInt();
            Client client = ClientConfig
                    //...省略...
                    // 修改mpush服务端端口
                    .setServerPort(8000)
                    // 修改设备id和用户id,增加随机数
                    .setDeviceId("deviceId-test" + i + "-" + random_num)
                    .setUserId("user-" + i + "-" + random_num)
                    //...省略...
                    .create();
            client.start();
            Thread.sleep(sleep);
            System.out.println("================clientNum:" + i + "-" + random_num);
        }
    }
}

二、生成JAR文件

这里使用IDEA把项目生成JAR文件,步骤如下:

  • 在src/main/下创建resources文件夹。
  • 选择【File】-【Project Structure】,新增artifacts配置。如下图:

  • 记得勾选【Include in project build】

  • 生成jar包:选择【Build】-【Build Artifacts】,执行生成动作。

  • 执行后项目根路径下会多出out目录,jar包生成完成。

三、执行测试程序

执行命令

// 总连接数1,每个连接间隔100ms
java -jar mpush-client-java.jar 1 192.168.6.62 100

如果在linux中使用,需要注意最大文件句柄数,通过如下方式修改:

# 查看最大句柄数
ulimit -a

# 设置最大句柄数
vi /etc/security/limits.conf 

* soft nofile 655360
* hard nofile 655360

# 载入sysctl配置文件
sysctl -p