DDPush消息推送 配置文件 ddpush.properties

DDPush提供ddpush.properties配置文件,控制DDPush运行时的各种参数。修改参数需重启DDPush服务器才能生效。该配置文件位于DDPush的类库jar包中,若需修改请先解压,修改完之后再打包。

配置文件以Key-Value键值对形式进行配置,例如:CONSOLE_TCP_PORT=9900

CONSOLE_TCP_PORT

值:整数TCP端口号。控制台console运行监听端口,默认9900。该端口应通过防火墙禁止外部IP访问。

CREATE_MACHINE_BY_CLIENT

值:YES|NO。默认YES代表收到终端心跳包时生成终端状态机。实际应用建议设为NO,这时只有应用服务器提交推送信息时才生成终端状态机。这样的好处是可以防止外部恶意攻击,造成DDPush生成大量无效终端状态机而导致内存不足,和主机崩溃。

TCP_CONNECTOR_ENABLE

值:YES|NO。默认YES,代表开启在线终端TCP模式。这时终端可以使用TCP连接DDPush,但强烈建议弃用TCP模式,这会大大增加服务器的压力,使容量下降到UDP模式的几十分之一,却没有太大的实际好处。

您也可以保留该项配置为YES,通过防火墙隔断该端口的非法通讯,这样会更灵活一些。

ACK_HEARTBEAT_POLICY

值:never|always|sa_changed。心跳回应策略。默认值never代表永远不回应客户端心跳包。always代表回应每个客户端心跳包。sa_changed代表当客户端的IP或端口发生变化时才回应心跳包。

该配置很重要,主要是打开心跳包回应后会占用网络流量,加大UDP丢包的概率。实际上,回应心跳包的意义不太大,因此默认是永不回应。

PUSH_MSG_MAX_CONTENT_LEN

值:正整数。自定义信息字节数组的最大长度,默认500。建议该值尽量控制在100个字节以内。

PUSH_LISTENER_PORT

值:应用推送TCP端口号,默认9999。应用服务器通过该端口向DDPush提交推送信息,因此建议增加防火墙设置条目,仅允许合法的应用服务器IP访问该端口。

PUSH_LISTENER_SOCKET_TIMEOUT

值:数字,秒。应用推送TCP连接超时时间,默认值600秒。应用服务器可能频繁向DDPush提交推送信息,这时双方的通信可以采用长连接避免频繁重连,因为DDPush不会主动关闭推送连接,除非连接空闲时间超过该参数的配置时间(秒)。

注意:推送部分没有实现心跳包机制(因为完全没有必要),所以实际的空闲TCP连接可能未到超时时间,其端口映射老化时间就已为0,端口被路由器回收,导致连接中断!(若应用服务器和DDPush服务器不在同一局域网的话)

PUSH_LISTENER_MIN_THREAD

值:正整数。推送工作线程池最少线程数。推送监听服务采用非阻塞网络IO技术(NIO),所以需配置工作线程池数。

PUSH_LISTENER_MAX_THREAD

值:正整数。推送工作线程池最大线程数。推送监听服务采用非阻塞网络IO技术(NIO),所以需配置工作线程池数。

CLIENT_TCP_PORT

值:TCP端口号。TCP模式下终端连接DDPush该TCP端口,默认值9966。

CLIENT_TCP_SOCKET_TIMEOUT

值:数字,秒。TCP模式下终端到DDPush连接的超时时间,默认值120秒。注:TCP客户端心跳包的间隔设置应该少于该值。DDPush提供的TCP终端示例可设置心跳间隔,其值不能少于服务器该项配置,否则终端TCP心跳间隔大于服务器超时时间,将无法正常工作。

CLIENT_TCP_MIN_THREAD

值:正整数。终端TCP在线工作线程池最少线程数。TCP模式在线服务采用非阻塞网络IO技术(NIO),所以需配置工作线程池数。

CLIENT_TCP_MAX_THREAD

值:正整数。终端TCP在线工作线程池最大线程数。TCP模式在线服务采用非阻塞网络IO技术(NIO),所以需配置工作线程池数。

CLIENT_UDP_PORT

值:UDP端口号。终端UDP在线端口,默认9966,UDP与TCP可同时使用同一个端口。

CLIENT_UDP_BUFFER_RECEIVE

值:整数,兆字节Mega Bytes。UDP连接接收缓冲区大小。生产环境下,该值建议设置为网络出口带宽的整数倍(三到五倍,注意字节与位的单位差别)。

重要!在Linux环境下,该参数若大于系统预设参数,可能会不生效。请修改/etc/sysctl.conf文件,加入“net.core.rmem_max=100000000”与“net.core.wmem_max=100000000”两行(默认100兆字节缓冲区),然后执行"sysctl -p"命令使之生效,然后重启DDPush服务进程。

CLIENT_UDP_BUFFER_SEND

值:整数,兆字节Mega Bytes。UDP连接发送缓冲区大小。生产环境下,该值建议设置为网络出口带宽的整数倍(三到五倍,注意字节与位的单位差别)。

CLIENT_UDP_WORKER_THREAD

值:整数,UDP包处理线程数,默认值3。

CLEANER_DEFAULT_EXPIRED_HOURS

值:整数,小时。运行自动清理操作时,清除最后心跳时间大于该小时数的终端状态机,以释放内存。

CLEANER_AUTO_RUN_MEM_PERCENT

值:小数,大于0小于1。触发自动清理操作的已用内存比例值,默认0.95。当DDPush发现已用内存与总内存的比例((Runtime.totalMemory()-Runtime.freeMemory())/Runtime.maxMemory())大于该值时,即已用内存超过最大内存的95%时,自动运行清理操作以释放内存(清除最后心跳时间到当前时间间隔大于CLEANER_DEFAULT_EXPIRED_HOURS参数配置的小时数的终端状态机)

事实上,该值也可以设置为大于1,这时将永远不会执行自动清理操作。