我有一个使用流星构建的webApp。 以下是规格:
Meteor version : 1.8
Mongo Version : 4.0.5
以下是我使用过的软件包的列表:
jquery@1.11.10
twbs:bootstrap@3.3.6
iron:router
reactive-var@1.0.11
fortawesome:fontawesome
blaze@2.1.8
accounts-password@1.5.1
mrt:mathjax
email@1.2.3
momentjs:moment
ian:accounts-ui-bootstrap-3@1.2.89
meteor-base@1.4.0
mongo@1.6.0
blaze-html-templates@1.0.4
session@1.2.0
tracker@1.2.0
logging@1.1.20
reload@1.2.0
ejson@1.1.0
spacebars@1.0.12
standard-minifier-css@1.5.2
standard-minifier-js@2.4.0
jss:jstree
meteorhacks:subs-manager
aldeed:template-extension
reywood:publish-composite
shell-server@0.4.0
stylus@=2.513.13
accounts-base@1.4.3
iron:middleware-stack@1.1.0
http@1.4.1
ecmascript@0.12.4
dynamic-import@0.5.0
sha@1.0.9
simple:json-routes
underscore@1.0.10
aldeed:simple-schema
rafaelhdr:google-charts
meteorhacks:aggregate
该WebApp托管在具有16GB RAM和04处理器的AWS ec2实例上。该应用程序使用pub-sub方法。现在的问题是,每当有50个以上的并发连接时,CPU使用率就会超过60%,并且webApp的使用速度会很烦人。根据我的发现,这可能是由于两个原因造成的,一个是我使用的pub-sub模式太繁琐,即我在每个页面上都大量使用了数据库订阅,而meteor则与它连续保持着开放连接。可能导致大量资源使用的其他原因可能是mongoDB使用。根据dbStats,该数据库使用超过06GB的RAM。详细信息如下:
我不确定为什么会这样。我能想到的唯一方法是点击并试用(删除订阅然后进行测试),但这将非常耗时,而且还不能提供充分的证据。
有人可以帮我解决一下吗。
答案 0 :(得分:1)
根据应用程序的设计方式(从数据角度出发),这种缺乏性能的原因可能很多。
一些建议:
我最好的猜测是,您可能需要合理化数据库“结构”并尽可能避免数据聚合。
您还可能在某处误用了低级收集api(例如cursor.observe()
)。