我们开发了 SMPP 应用程序。它的短信接收速度仅为每秒 16 条短信。我怎样才能提高这个速度?
3 回答
首先,我建议让 JRat 来分析应用程序。在优化之前,您需要知道在哪里进行优化。
话虽如此,我也经历了这个。我遇到的最大瓶颈是ServerPDUEventListener
实现——在我的第一个版本中,我正在处理该类中的所有传入 PDU——对它们进行序列化访问——并且一些正在执行数据库访问!我解决这个问题的方法是为我实际上想要以更详细的方式处理的 PDU 生成线程——在我的情况下,这是DELIVER_SM
PDU 和SUBMIT_SM_RESP
PDU,但这取决于您正在开发的实际应用程序。在单独的线程中处理它们意味着我的 mainServerPDUEventListener
可以自由地继续处理下一个 PDU。瓶颈类似于实现服务器套接字 - 每当您accept
使用客户端套接字时,您都希望返回侦听其他传入连接并在单独的线程中处理通信。
首先以异步模式处理所有传入和传出的短信。例如,在 jsmpp 库中,您可以在异步和同步模式下处理所有流量。第一种模式更快。
如果可能的话,在单独的线程中处理所有繁重的业务逻辑,如果可能的话,例如在企业 Java bean 中。如果您的流量非常大并且业务逻辑过于繁重,那么在 smpp 和企业 Java bean 中使用异步模式进行业务逻辑可以极大地改善您的应用程序架构。
它是什么类型的应用程序,用 Java 编写的?
几件事 1. 查看处理时间最多的地方。这将导致解决方案 2. 可以优化处理流程以排队和处理消息
还涉及其他因素,例如硬件配置等,但普通硬件提供了不错的性能。