接收大量短信时出现堵塞现象,帮帮忙啊

xx0118 2004-08-01 10:01:55
当很多用户几乎同时发送时,SP就不能全不接收过来,据移动网关的人说堵在网关。
我尝试了SP同时建立多个连接(广东地区好象最多同时可以建8个连接),这样也没能解决问题。

请问大家都是如何处理大的SP上行短信???
PS:我每接收到一条就NEW一个线程,所以只要网关能送到SP来,SP肯定能处理过来的
...全文
216 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
icewolf_li 2004-08-06
  • 打赏
  • 举报
回复
你直接收到一条mo就new Thread肯定是受不了的。
我的做法是自己实现一个队列,mo接收线程收到消息就往队列里面input & notifyAll,另外启若干个线程(可以根据队列的长度动态的决定线程地数量),对队列对象作synchronized & wait,这样一旦有消息到自动处理线程被唤醒进行消息的详细处理。
否则照你的做法,就算mo的量不多,如果你的mt都请求状态报告(一般要做收入统计报表的话这是必然的)的话,你push了多少mt消息就会返回多少的状态报告,你的机器再牛也没办法new出几万个线程来处理阿。首先java VM的虚拟内存就会不够了。
xx0118 2004-08-05
  • 打赏
  • 举报
回复
to icewolf_li(冰狼) :
帮忙看看!
接收函数:
public CMPPMessage onDeliver(CMPPDeliverMessage msg)
{
if(msg.getRegisteredDeliver() != 1){
try{
if(msg.getMsgFmt() == 8) sTMPMSG = new String(msg.getMsgContent(),"UnicodeBigUnmarked");
else sTMPMSG = new String(msg.getMsgContent());
//每接收到就在一个线程处理
(new JsThread(sTMPMSG.trim(),msg.getDestnationId(),msg.getSrcterminalId())).start();
}catch(Exception e){System.out.println("onDeliver.error......");}

}

demo.ProcessRecvDeliverMsg(msg);
//return super.onDeliver(msg);
return null;
}

问题简单化的说:每收到一条短信就会触发onDeliver事件,问题就是该事件不会因用户并发量增大而触发事件频率加快,难道是跟(new JsThread(sTMPMSG.trim(),msg.getDestnationId(),msg.getSrcterminalId())).start(); 有关?????????
icewolf_li 2004-08-03
  • 打赏
  • 举报
回复
网关的问题可能性不大。我不知道你们上行的并发量有多大,但如果其他sp没有问题偏偏你自己老是堵的话,还是检查一下你自己的消息接收程序吧。
一般来说你收到一条mo就new一个线程实在是太夸张了。你的机器再牛也撑不住几千几万个并发出来的线程吧。通常的做法是在你自己这边建一个队列,收到一个就往队列里面放,再由有限个线程专门去对队列进行读取处理。
wjohenw 2004-08-03
  • 打赏
  • 举报
回复
老大,你够强。一个用户上来,你就new一个线程。

你要那么多线程干吗,又不是收钱。
ltylty 2004-08-03
  • 打赏
  • 举报
回复
如果是这样,那还有个可能是网络环境的问题,
你可能要考虑的你的服务器的托管的地方,和网关的通信速度怎么样

rwdx 2004-08-02
  • 打赏
  • 举报
回复
这个已经与你无关了,网关的问题只能由服务商解决,
xx0118 2004-08-02
  • 打赏
  • 举报
回复
to catyou(雨后春笋):
现在问题是短信从网关送不到SP来啊。。。用户发短信已经到网关了
catyou 2004-08-02
  • 打赏
  • 举报
回复
I think that your design is not good. If 10000 users send message to you at the same time, then you must create 10000 threads. Do you think that your server has the ability? So It will be dead. It is not better that the thread number is more than one number, such as 50.

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧