网关采用nodejs 的TCP模块接收GPS上报上来的数据,采用Http模块的将解析完的数据发送到java写的服务中去。该服务是用structs + sping +ibatis架构,数据库oracle。web服务器采用tomcat,服务器linux red hat 64位,16G内存。第一个问题出现了,当GPS终端量增大了,慢慢的将16G的内存耗尽。时间2-3天。经过排查是数据库的处理速度跟不上服务发送的数据。本来想部署weblogic后来由于出现问题,老是部署失败。最后升级了数据库版本。莫名其妙的好了。郁闷!。前不久数据库都被爆掉了。第二个问题,nodejs网关有时候会出现http连接队列已满。造成无法向服务发送数据。重启后即可。这些问题目前还无法彻底解决只能定时去重启网关。
如果大牛知道请告之。谢谢。。。。以后还会分享一些遇到的技术问题。
14 回复
不见得吧。。。
“http连接队列已满"是指那边的连接?
1.如果是 GPS终端量 到 node 的,那是 node 有性能瓶颈了。(个人觉得可能性小)
- 如果是 node 发送数据到 tomcat 的http连接,那还是tomcat/oracle这边有问题,来不及处理造成积压。
有条件,建议单独测试下,比如node接收到数据后,暂时不发到tomcat,直接写到本地文件,看看能不能扛住,一步一步排查。
如果能不经tomcat转一道,而是从node直接入oracle库,是最好的了,除非… oracle 自己也扛不住这么大、这么实时的的数据插入量。
github 上有一些 oracle node 的模块,不过好像都不太活跃的样子,我也一直在找,郁闷~~