小编dsp*_*099的帖子

是否可以使用rake在Rails中模拟页面请求?

我一直在研究一个对我来说不寻常的rails项目,因为它不会使用MySQL数据库,而是使用mongoDB + Redis.

该应用程序非常简单 - 从mongoDB到Redis的"启动"数据,之后rails将准备好接收来自用户的请求,这些请求主要包括从redis中提取数据,(我被告知它非常快速这个)快速计算并将一些数据发送回用户.这将每秒发生~1500-4500次,运气好的话.

在用户军队的威力下降到服务器之前,我想知道是否有办法在内部以某种方式"模拟"页面请求 - 比如运行rake任务以简单地每秒执行该页面N次或类似的东西?

如果没有,是否有办法测试该负载,然后对请求进行计时,以大致了解大多数用户将要查看的延迟?

performance ruby-on-rails heroku mongodb redis

3
推荐指数
1
解决办法
628
查看次数

如何在访问哈希内部的哈希时处理潜在的错误?

有时在处理API响应时,我最终会写一些类似于:

what_i_need = response["key"]["another key"]["another key 2"]
Run Code Online (Sandbox Code Playgroud)

问题是,如果"another key"丢失,它会抛出一个错误.我不喜欢那样.如果我是一个很多快乐what_i_need翻了nil,如果沿着过程的东西坏了.

是否有比以下更优雅的解决方案:

what_i_need = nil
begin
  what_i_need = response["key"]["another key"]["another key 2"]
rescue Exception => e
end
Run Code Online (Sandbox Code Playgroud)

我还考虑过猴子修补NilClass你尝试访问nil["something"]它会返回nil,但我不确定这是否是最好的方式来解决它,如果它甚至可能.

ruby hash

3
推荐指数
2
解决办法
2232
查看次数

运行多个Docker虚拟机的服务器将如何处理TCP限制?

在非常繁重的负载下,服务器似乎无法足够快地“回收” TCP连接。

我正在研究使用Docker通过在一台机器上创建节点服务器的多个实例而不是使用多台机器来处理对API的每秒更高数量的请求。

如果设置了以下sysctl设置,则回收似乎确实更快了,但是仍然存在对多少个套接字的硬限制:

net.ipv4.ip_local_port_range='1024 65000'
net.ipv4.tcp_tw_reuse='1'
net.ipv4.tcp_fin_timeout='15
Run Code Online (Sandbox Code Playgroud)

当运行多个Docker实例时,TCP连接的总上限是否仍等于“父”计算机可以处理的最大TCP连接数?

sockets performance tcp docker

3
推荐指数
1
解决办法
2922
查看次数

为什么 0.1 + 0.2 会在 JavaScript 中返回不可预测的浮点结果而 0.2 + 0.3 不会?

0.1 + 0.2
// => 0.30000000000000004

0.2 + 0.2
// => 0.4

0.3 + 0.2
// => 0.5
Run Code Online (Sandbox Code Playgroud)

我知道这与浮点有关,但这里到底发生了什么?

根据@Eric Postpischil 的评论,这不是重复的:

那只涉及为什么“噪音”出现在一个附加项中。这个人问为什么“噪音”出现在一个加法中而没有出现在另一个加法中。这在另一个问题中没有回答。因此,这不是重复的。事实上,差异的原因并不是浮点运算本身,而是ECMAScript 2017 7.1.12.1 step 5

javascript floating-point precision

3
推荐指数
1
解决办法
2381
查看次数

window.attachEvent似乎在IE8中不起作用

首页:

...
<script>
if (window.addEventListener) {
 // addEventListener equivalent of code below
} else if (window.attachEvent) {
 window.attachEvent("message", function(e) {
  if (e.origin != "page2.html") { return; }
  alert(e.data);
 });
}
</script>

<iframe src="page2.html"></iframe>
Run Code Online (Sandbox Code Playgroud)

page2.html:

<script>
var message = "hello!";
parent.postMessage(message, '*');
</script>
Run Code Online (Sandbox Code Playgroud)

此代码在Chrome,FF和Opera中运行良好.当然,IE有自己的做事方式,所以尽管使用了自己的代码,这些代码仍无法正常工作.attachEvent.

page2.html实际上是另一个域的页面; 我正在发送正确的P3P标头(应该没关系,但就是这样).

我如何找出为什么postMessage似乎没有到达父页面?

javascript javascript-events internet-explorer-8

2
推荐指数
1
解决办法
4851
查看次数

为什么这个回调返回undefined?

function firstFunction(num, callback) {
  callback(num);
};

function secondFunction(num) {
  return num + 99;
};

console.log(firstFunction(56, secondFunction));
Run Code Online (Sandbox Code Playgroud)
undefined
Run Code Online (Sandbox Code Playgroud)

如果我console.log从内部调用secondFunction,它将返回值.

为什么不?如果我无法从中获取值以便稍后使用,那么设置回调的重点是什么?我错过了什么.

javascript callback

2
推荐指数
1
解决办法
5870
查看次数

为什么这个带超时的回调无法返回?

function one(num, callback) {
  return callback(num);
};

function two(num) {
  // return num + 99; << this works
  setTimeout(function() { return num + 99; }, 1000); // << this doesn't
};

console.log(one(55, two));
Run Code Online (Sandbox Code Playgroud)

setTimeout中返回的结果是未定义的.我可以看到它为什么会发生,但我不知道如何避免它.

我有一些函数,我require在node.js,我想传递一个redis对象来获取/设置一些数据,如果我最终使用某种类型的回调,这可能会复制这种情况.

有没有办法恢复这个价值?

javascript callback node.js

2
推荐指数
1
解决办法
92
查看次数

Resque任务总是失败 - 未初始化的作业常量?

我之前尝试过使用Resque并遇到了彻底的失败.我正在重新审视它,结果相同......

resque.rake:

require "resque/tasks"

task "resque:setup" => :environment
Run Code Online (Sandbox Code Playgroud)

test.rb:

require 'resque'

class FileWorker
  @queue = :save_to_file

  def self.perform(str)
    File.open('./' + Time.now.to_s + '.txt', 'w+') do |f|
      f << "test 123"
    end
  end
end

Resque.enqueue(FileWorker, "12345567".split('').shuffle.join)
Run Code Online (Sandbox Code Playgroud)

Gemfile:

gem 'resque'
gem 'rake'
Run Code Online (Sandbox Code Playgroud)

看起来像test.rb自己运行成功地排队工作:

在此输入图像描述

但是,rake resque:work QUEUE='*'在同一文件夹中运行会导致警告,

警告:现在不推荐使用这种信号处理方式.有关详细信息,请参阅http://hone.heroku.com/resque/2012/08/21/resque-signals.html.

以及添加到"失败"队列的任务以及以下原因: "exception":"NameError","error":"uninitialized constant FileWorker"

我如何让它工作?看起来很明显,但有很多关于Resque的教程跨越多年 - 有些痛苦地过时了,没有一个解释如何运行工人,所以他们不会失败.

提前致谢.

ruby background heroku sinatra resque

2
推荐指数
1
解决办法
2619
查看次数

如何逐行读取大型文本文件并将此流逐行附加到 Ruby 中的文件中?

假设我想将几个大文件合并成一个,然后再合并uniq! 一个(仅此一项可能需要一秒钟)

我的理解是File.readlines()将所有行加载到内存中。有没有办法逐行读取它,有点像 node.jspipe()系统的工作原理?

ruby memory filesystems performance file

2
推荐指数
1
解决办法
2288
查看次数

如何在 Nuxt 的 asyncData 方法中获取用户的 IP?

Nuxt 使用 asyncData 在服务器端运行代码,然后将其与数据对象合并。

我想拨打电话,要求我知道用户的 IP。我看到我可以到达req确实拥有它对象,但它深埋在那里,我担心这不是一种可靠的方法。

如何在服务器端而不是客户端访问主叫用户的 IP 地址?

javascript geolocation vue.js nuxt.js

2
推荐指数
1
解决办法
5047
查看次数