OpenShift HAProxy缩放不起作用

我一直在尝试使用ny NodeJS Express 4应用程序(本质上是一个REST API)来获得OpenShift的HAProxy扩展,但是我没有太多的运气。 我正在使用loader.io的压力testing工具,每分钟只有100个用户(从0开始),因为我确信至lessNodeJS / Express应该能够处理这个问题。 现在被允许,这在60秒内确实产生了大约10-20k个请求,但是仍然如此。 在请求开始冲击服务器之后会发生什么呢?我可以看到CPU上升,内存保持稳定,HAProxy的日志文件让我知道它将要扩展。 它从来没有。 HAProxy在可扩展之前崩溃,然后丢失与OpenShift主机的SSH连接。 不过一段时间后会回来。 有一次,我确实看到它已经达到默认的128个连接限制,然后试图启动另一个设备,但是由于请求不断出现,我猜测它无法处理? 起初我以为是因为使用了一个小的齿轮,因为我正在运行'顶部',看到CPU负载穿过屋顶,最终我断开了连接。 我删除了应用程序,并切换到small.highcpu齿轮(每小时花费钱)。 当它应该扩大时,仍然崩溃(less于100个并发用户)。 small.highcpu设备做了一些不同的事情,因为它重新启动后,它增加了一个新的齿轮,但它不缩小(即使所有的stream量已经停止),所以我不得不手动缩小 如果我离开第二个齿轮,并在1分钟内尝试再次用100个用户进行压力testing,HAProxy仍然下降(内存使用情况和CPU似乎没问题),之后不久我就失去了SSH连接。 而且,这一次它不是自动出现的。 我也在我的NodeJS应用程序中收到以下错误: { [Error: socket hang up] code: 'ECONNRESET' } { [Error: socket hang up] code: 'ECONNRESET', sslError: undefined } 如果我之后手动重启HAProxy(因为还没有popup来,我不得不这样做),我可以看到本地设备已经closures了,而第二个设备启动了,这意味着我的NodeJS应用程序在第一档崩溃,在二线上线。 这真的是有意的行为吗? 在处理NodeJS和HAProxy时,我应该做些什么吗? 如果我不能处理100个用户/分钟,我确实无法certificate为这样的服务付费,因为我确信我最终将远远超过100个用户。 更新 :这是一个loader.iographics/报表,HAProxy放弃时显示: http : //ldr.io/1tV2iwj 更新2 :我试着使用Blitz而不是loader.io,只是为了确定HAProxy何时发疯。 闪电战结束了12K点击,26K错误和4K超时。 此外,HAProxy下降,似乎永远不会回来。 这一次,我决定等待,几分钟后,本地DID又回来了。 但是,它没有提出任何额外的齿轮。 这也是HAProxy在Blitztesting发生的时候告诉我的(在它崩溃之前,我断开了连接): […]

如何使用islocationOnEdge函数来查找服务器端谷歌地图API的path上/附近的坐标

这个问题是关于寻找你的道路上的特定城市的问题的扩展,但包括所有的细节。 google.maps.geometry.poly.isLocationOnEdge(LatLngOfDbCoordinate,new google.maps.Polyline({path:google.maps.geometry.encoding.decodePath(response.routes[0].overview_polyline)}),0.00001); 1)我可以在服务器端运行这段代码很多(例如:10000)( LatLngOfDbCoordinate存储在数据库中)在JavaScript代码中的JavaScript与Node.JS? 2) 如果是,那么你能告诉我该怎么去做 3)你能告诉我如何执行这个代码通过PHP或与其他类像http://luktek.com/Blog/2011-02-03-google-maps-routeboxer-in-php (从堆栈溢出链接在顶部)? 你能告诉我如何使用上面提到的routeboxer类的isLocationOnEdge()函数吗? 4)有没有其他更简单的方法来使用isLocationOnEdge()或任何其他方法在我不知道的服务器端? 5)服务器端是否有使用函数isLocationOnEdge()使用限制? 由于这是几何库的function,我只能使用这个函数布尔返回值来显示折线上/附近的坐标是否适用于使用限制? 6)这将是有用的路线存储在数据库中的概要折线(原因可能是很长的情况下,大路线),或者我应该每次向谷歌URL服务发送请求开始和目的地坐标,并使用概述折线,我收到作为JSON或XML传入isLocationOnEdge() ? 请说明原因。 请帮忙 提前致谢

找不到模块(nodejs)

模块: getmac https://www.npmjs.org/package/getmac Backstory:之前我使用过模块getmac,它的function就像一个魅力。 前段时间我更新了nodejs到0.11。 今天我试着再次使用它。 我安装它(NPM安装得到MAC)试图使用。 不。 “找不到模块”。 我在node_modules中看到getmac文件夹。 Npm ls显示: ├─┬ getmac@1.0.6 │ └─┬ extract-opts@2.2.0 │ └── typechecker@2.0.8 我正在使用像20 +其他模块没有任何问题。 操作系统: Windows 7 32位,pipe理员帐户 我如何testing它是否工作:我的项目可能成为问题的可能性: 我创build了新的文件夹。 然后我打开命令行并使用: npm install getmac 我用一行创build了test.js : require('getmac'); 在命令行中: nodejs test.js 每次结果都是一样的: module.js:340 throw err; ^ Error: Cannot find module 'getmac' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at […]

Javascript forEach中删除元素

我试图做一个函数,可以从一个forEach循环中删除一个元素。 function: loopAndEdit = function(array,callback) { var helper = { data:{}, get:function() { return helper.data; }, remove:function() { index = array.indexOf(helper.data); array.splice(index,1); return true; } }; tempArray = array; tempArray.forEach(function(row) { helper.data = row; callback(helper) }); } 为了testing它,我遍历一个数组并尝试删除所有元素: names = ['abe','bob','chris']; loopAndEdit(names,function(helper){ console.log('Working on ' + helper.data); helper.remove(); }); console.log(names); 输出是: Working on abe Working […]

在phonegap应用程序的node.js服务器上使用CORS

我试图连接我的cordova / phonegap应用程序与我的node.js服务器。 问题是,我得到这个错误"XMLHttpRequest cannot load http://127.0.0.1:1234/api/users. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5000' is therefore not allowed access. The response had HTTP status code 500. " 。 我尝试添加这个中间件到我的node.js服务器,进入我的phonegap域,然后,当然,只是为了testingpurpouses,我想我会允许所有域的CORS,仍然没有运气。 这是我在我的node.js服务器上使用的: app.use(function (req, res, next) { // Website you wish to allow to connect res.setHeader('Access-Control-Allow-Origin', '*'); // Request methods you wish to […]

Reddit Api错误试图通过snoocore node.js获取reddit自己的文本

我tryng得到self.text上的post,并使用此路线: reddit('/r/Denmark/comments/2jc5yk/how_to_live_in_denmark.json').listing({ context: 1, limit: 10, sort: 'hot', }) .then(function(result) { console.log(result); }); 我也尝试使用.get() ,没有/how_to_live_in_denmark和/how_to_live_in_denmark但仍然是相同的错误。 当我在浏览器中input路由时,我得到所需的JSON。 我得到的错误: Uncaught Error: Invalid path provided! This endpoint does not exist. Make sure that your call matches the routes that are defined in Reddit's API documentation 我究竟做错了什么?

使用Passport基于dynamic路由进行身份validation

我正在用Node.js创build一个API,并且我有一些我想要保护的端点。 为了简单起见,我们假设我为所有端点使用HTTP基本身份validation( passport-http )。 我最想做的就是确保像这样的路由: api.example.com/users/:uid/ : api.example.com/users/:uid/只能由具有该ID的用户访问。 我可以这样做: app.get('/users/:uid', passport.authenticate('basic', { session: false }), function (req, res, next) { if (req.params.uid !== user.id) { return next(new Error('Unauthorized')); } return next(); }, function (req, res, next) { // do secret stuff } ); 但是我想知道是否有办法通过使用Passport本身来添加额外的中间件: app.get('/users/:uid', passport.authenticate( ??? ), function (req, res, next) { // do […]

如何在node.js中导出envvariables

我喜欢我的node.js这么多,我想用它是我的bash启动脚本~/.bashrc ,但我不知道如何导出variables。 目前我必须使用这种方法: export PS1=`node ~/PS1.js` export PS2=`node ~/PS2.js` export PATH=`node ~/PATH.js` 相反,我想.bashrc看起来有 #!/usr/local/bin/node //do something, define functions export_var('PS1', PS1()) export_var('PS2', PS2()) export_var('PATH', generatePATH()) process.env.PATH = something不导出 ,只为当前正在执行的进程设置,这是节点本身。

无法使用node.js将sass模块安装到gulp.js

运行npm install gulp-sass –save-dev时,我不断收到以下错误 gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.j 67:23) gyp ERR! stack at ChildProcess.emit (events.js:98:17) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:810:12) gyp ERR! System Windows_NT 6.1.7601 gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "reb d" gyp ERR! […]

meteor:共享模板

我用一个非常大的表单来构build一个使用Meteor的应用程序。 我使用了几乎相同的html模板两次,一次用于input,一次用于输出,但助手是不同的。 由于两个模板很难维护,我的问题是,如果有一种方法可以共享一个html模板或克隆它,这样我可以有相同的模板,但不同的帮手和事件?