![](/img/trans.png)
[英]Can I / Should I disable Ruby On Rails Database Connection Pooling when using PgBouncer?
[英]Connection Pooling in Ruby on Rails
我必须从另一个微服务(M2)中调用一个微服务(M1)。 由于会有很多对 M1 的 http 请求,我正在使用连接池并且我正在使用持久性 gem,请查看链接https://www.rubydoc.info/gems/persistent_http/2.0。 3 . 我已经将 class 中的两种方法设置为 self-send_get_message 和 self-send_post_message。 因此,每当我必须提出请求时,我都会通过 class 引用直接调用该方法。 这是定义池和使用 Get 和 Post 方法的正确方法吗?
class HttpClientPool
@@persistent_http = PersistentHTTP.new(
name: 'MyHTTPClient',
logger: Rails.logger,
pool_size: 10,
warn_timeout: 0.25,
force_retry: true,
url: "http://m1.com/",
read_timeout: 2,
open_timeout: 1,
)
@@x = 1
def self.send_get_message(path)
puts "--path = #{path}"
@@x= @@x+1
puts "---var is #{@@x}"
request = Net::HTTP::Get.new(path)
@@persistent_http.request(request)
end
end
现在,每当我调用 HttpClientPool.send_get_message 来发送获取请求并打印 @@x 时,该值都应该增加。 当我在本地机器上执行此操作时 - 似乎很好。 但是当我在远程服务器上部署时,@@x 的值随机出现,主要是 2、3、4、5、6,而且似乎并没有持续增加。
你有什么类型的服务器? 在您的本地机器上,ruby 内部线程锁可能会使变量持续增加,但在多线程环境中,它可以以“随机”方式访问和增加。
顺便说一句:x 是一个可怕的变量名称,对于基本持久的 HTTP 请求架构,使用 WebSockets 或其他类型的连接架构不是更合适吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.