【发布时间】:2018-01-03 09:16:15
【问题描述】:
我们有一个实时应用程序,其中 AppServer(用 c/c++ 编写)用于广播网络事件详细信息 (通常几百到几千行,每秒大约 40-50 列)到用 gtk 编写的客户端 GUI 应用程序 通过网络使用 XML/RPC,以及写入 DB(在同一台机器或 LAN 上运行)。 95% 的通信是从服务器到客户端。 它运行良好,没有任何问题。
我们必须将应用程序移植到 Web。在最初的尝试中,我们保持 C/C++ 应用服务器不变。现在我们将数据发送到 java web 通过 xml/rpc 的应用程序服务器。 Java服务器保持一个循环队列(最初保持2000的小尺寸)并推送数据 通过 websockets 到客户端。在客户端,我们使用角度 ui-grid 来显示数据。
目前的问题是浏览器无法以这种频率处理这么多的数据,并且 一段时间后(几个小时)变得没有反应。这是一个应该 24/7 运行的网络监控应用程序,虽然我们很少 用户,我们对他们机器的配置没有太多控制(主要是低/中端)。服务器(tomcat 8)运行在 2*6 内核、16 GB RAM 上。
您能否就提高浏览器性能提出建议?我们甚至准备从头开始实施新的解决方案。 但我认为浏览器性能永远是瓶颈。
【问题讨论】:
-
那么您是否经常推送数据(行)以供浏览器显示?在这种情况下,DOM 会不断增长,所以在某些时候,它会变得如此巨大,以至于浏览器无法应对,这很正常。在一页中显示所有 2 亿行是没有意义的。只需在给定时间显示相关信息。
-
你推荐这个“活动窗口”的尺寸是多少?
-
我们试图将此大小保持在低至 500 到 1000 行。但是服务器以高速率生成数据,即使这个速率也阻碍了浏览器。系统(或浏览器)必须每秒至少处理几百行。
标签: javascript java websocket real-time xml-rpc