如何优化Postgresql max_connections和node-postgres连接池?

简而言之,我无法支持利用Postgresql,Node.js和node-postgres的数据API每分钟超过5000个读取请求。 瓶颈似乎在API和数据库之间。 这里是implmentation的细节。 我为Node.js供电的数据API使用了AWS Postgresql RDS数据库实例(m4.4xlarge – 64 GB mem,16 vCPU,350 GB SSD,没有预configuration的IOPS)。 默认情况下,RDS的max_connections = 5000。 节点API在两个群集之间进行负载均衡,每个群集有4个进程(2个Ec2和4个vCPU,在群集模式下使用PM2运行API)。 我使用node-postgres将API绑定到Postgresql RDS,并试图使用它的连接池function。 以下是我的连接池代码示例: var pool = new Pool({ user: settings.database.username, password: settings.database.password, host: settings.database.readServer, database: settings.database.database, max: 25, idleTimeoutMillis: 1000 }); /* Example of pool usage */ pool.query('SELECT my_column FROM my_table', function(err, result){ /* Callback code here */ […]

当Angular不可用时,如何等待一个元素与量angular器可见?

我有一个用于量angular器testing的login函数,它看起来像这样: var config = require("../helpers/config.js"); var login = function() { browser.driver.get(config.dsp.url); browser.driver.findElement(by.name("userName")).sendKeys(config.dsp.user); browser.driver.findElement(by.name("password")).sendKeys(config.dsp.password); return browser.driver.findElement(by.name("submit")).click().then(function() { return browser.driver.wait(function() { return browser.driver.isElementPresent(browser.driver.findElement(by.className("sample-class-name"))); }, 360000); }); } module.exports = login; 我不能使用任何量angular器特定的钩子,因为在这个页面上没有使用Angular,所以我必须使用底层的webdriver API。 问题是,我似乎无法弄清楚如何等待,直到一个元素是可见的使用这个包装的webdriver对象。 任何帮助,将不胜感激。

SES:在lambda函数中访问电子邮件正文

我对AWS比较陌生,我试图通过Lambda函数处理我的电子邮件。 我已经在node.js中构build了这个: 'use strict'; exports.handler = (event, context, callback) => { var http = require('http'); var data = JSON.stringify(event); var options = { host: 'my.host', port: '80', path: '/my/path', method: 'POST', headers: { 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': data.length } }; var req = http.request(options, function(res) { var msg = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { msg […]

使用express-jwt作为中间件来validationAzure AD颁发的令牌

我想知道是否可以使用express-jwt NPM包作为中间件来validation由Azure AD发布的JWT令牌。 我们有一个以express / node编写的web API,并希望应用中间件模式来保护我们的端点并填充用户原则。 似乎: server.use(jwt({ audience: '{UUID}', issuer: 'https://sts.windows.net/{UUID}', }).unless({path : ['/']})) 因为它需要一个客户端秘密,但是从AD(就像在隐式stream程中那样),令牌是通过用户交互来检索的,并且没有客户端秘密。

Express-session和express-socket.io-session在angular2 / typecript环境中不起作用

所以我有一个script.js设置服务器,如下所示: var io_session = require("express-socket.io-session"); var e_session = require("express-session")({ secret: "a-secret", resave: true, saveUninitialized: true }); (…) //this block is the last "io.use" before the socket logic (io.on("connection")) io.use(io_session(e_session,{ autoSave: true })); 在我的typecript / angular2前端环境中使用下面的种子https://github.com/NathanWalker/angular2-seed-advanced我使用Http类在多个服务/组件中执行http请求。 然而,当我尝试再次请求服务器的东西,我尝试logging用户会话,什么都没有logging…我不知道为什么会发生这样的事情,不仅用户的会话不被保留,而且会话不是从http共享到套接字层系统(很明显,如果它没有被创build,它也不被共享)。 有人知道这里可能是错的吗? 我可以提供更多的信息,如果需要,但我真的不知道什么是失踪…非常感谢您的帮助。

来自UglifyJs的bundle.js中的错误

我已经完成了一个项目,现在是时候build立它了。 我正在使用一个样板项目,仍然不完全理解所有npm / webpack的内幕。 当运行“npm start”时,我收到错误: ERROR in bundle.js from UglifyJs SyntaxError: Unexpected token: punc ()) [bundle.js:848,29] 在这个问题上search了一个小时后,我仍然无法解决它。 根据我的理解,这个问题正在发生,因为Uglify还不喜欢ES2016。 然而,我在互联网上find的解决scheme似乎没有工作,或者没有足够的意义,我来执行。 我发现这个stackoverflow的问题,并改变了我的项目的package.json文件中的webpack行到: "webpack": "fulls1z3/webpack#v2.1.0-beta.27-harmony" 但是这不起作用。 分叉webpack的另一个build议目前还不在我的理解之中。 我也尝试在另一个build议运行我的src文件夹上运行babel,但是这似乎并没有做任何事情,或者我不正确地运行它。 有没有人有一个很好的解决这个问题? 我现在很困难,没有时间从头开始学习npm / webpack,以便完全掌握发生了什么事情。 非常感激!

在节点中logging100个数组项

我正在尝试logging一个很长的数组,所以我可以在terminal快速复制它。 但是,如果我尝试logging数组,它看起来像: ['item', 'item', >>more items<<< … 399 more items ] 我怎样才能logging整个arrays,所以我可以很快复制它?

`db.serialize`如何在`node-sqlite3`中工作

最近我正在学习使用节点和节点sqlite3来操纵sqlite3,这里是一个示例。 var sqlite3 = require('sqlite3'); var db = new sqlite3.Database(':memory:'); db.serialize(function() { db.run("CREATE TABLE test(info TEXT)"); db.run("INSERT INTO test (info) VALUES ('info1')"); }) db.close(); 该文件说, db.serialized是用来确保SQL行按顺序执行,但我很困惑,为什么不按顺序执行没有db.serialize ,毕竟他们将被从事件队列中拉出并执行订购? 它在这里如何工作? 如果只有一个sql被执行,是否安全地运行它没有db.serialize如下? var sqlite3 = require('sqlite3'); var db = new sqlite3.Database(':memory:'); db.run("CREATE TABLE test(info TEXT)"); db.close();

node / nodemon中是否存在对typescript的源映射支持?

我有一个用typecript @ 2编写的节点项目。 我的tsconfig的sourceMap设置为true ,生成*.map.js文件。 当我通过node或nodemon执行我的转码的*.js JavaScript文件时,我只能看到相对于js文件的错误消息,而不是映射的打字稿文件; 我认为它完全被忽略。 sourceMap支持仅用于浏览器支持吗? 或者我可以将它与node或nodemon一起使用吗? 如果后者,我将如何启用它? 我想查看相对于打字稿文件在js文件中检测到的错误。

如何在多台机器上群集Node应用程序

我正在使用Express js和节点群集来利用群集我也使用PM2进行进程和内存pipe理。 对于一台机器,它工作正常,但我的机器有两个核心,我想提供更多的核心。 所以我决定join3台机器,现在所有4台机器都使用LAN连接。 我也可以在networking浏览器中使用IP地址访问其他机器。 现在我想连接所有的机器,并希望共享他们的内核,以便我的应用程序最终拥有2 + 6 = 8个内核。 怎么可能? 有没有任何节点模块可以实现这一目标? 谢谢。