# Net::OpenTimeout: execution expired

正在帮助 @rakekniven 解决论坛性能问题,用户已无法上传图片。此错误频繁出现。此人似乎也遇到了类似错误且无法上传图片

论坛上的插件
  • 预设回复
  • discourse-checklist
  • discourse-legal-tools
  • discourse-solved
  • docker_manager
  • styleguide - 已禁用
Message (661 copies reported) on 2.9.0.beta4

#<Net::OpenTimeout: execution expired>

Backtrace

/usr/local/lib/ruby/2.7.0/net/http.rb:960:in initialize' /usr/local/lib/ruby/2.7.0/net/http.rb:960:in open’
/usr/local/lib/ruby/2.7.0/net/http.rb:960:in block in connect' /usr/local/lib/ruby/2.7.0/timeout.rb:105:in timeout’
/usr/local/lib/ruby/2.7.0/net/http.rb:958:in connect' /usr/local/lib/ruby/2.7.0/net/http.rb:943:in do_start’
/usr/local/lib/ruby/2.7.0/net/http.rb:932:in start' /usr/local/lib/ruby/2.7.0/net/http.rb:606:in start’
/var/www/discourse/lib/final_destination.rb:515:in safe_session' /var/www/discourse/lib/final_destination.rb:455:in safe_get’

上传错误

Net::OpenTimeout : execution expired


消息 (已报告 273757 份)

无法正确处理劫持的响应:Net::OpenTimeout : execution expired

回溯

/usr/local/lib/ruby/2.7.0/net/http.rb:960:in initialize' /usr/local/lib/ruby/2.7.0/net/http.rb:960:in open’
/usr/local/lib/ruby/2.7.0/net/http.rb:960:in block in connect' /usr/local/lib/ruby/2.7.0/timeout.rb:105:in timeout’
/usr/local/lib/ruby/2.7.0/net/http.rb:958:in connect' /usr/local/lib/ruby/2.7.0/net/http.rb:943:in do_start’
/usr/local/lib/ruby/2.7.0/net/http.rb:932:in start' /usr/local/lib/ruby/2.7.0/net/http.rb:606:in start’
/var/www/discourse/lib/final_destination.rb:515:in safe_session' /var/www/discourse/lib/final_destination.rb:455:in safe_get’
/var/www/discourse/lib/final_destination.rb:147:in get' /var/www/discourse/lib/file_helper.rb:68:in download’
/var/www/discourse/app/controllers/user_avatars_controller.rb:158:in proxy_avatar' /var/www/discourse/app/controllers/user_avatars_controller.rb:51:in block in show_proxy_letter’
/var/www/discourse/lib/hijack.rb:56:in instance_eval' /var/www/discourse/lib/hijack.rb:56:in block in hijack’
/var/www/discourse/lib/scheduler/defer.rb:94:in block in do_work' rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in with_connection’
/var/www/discourse/lib/scheduler/defer.rb:89:in do_work' /var/www/discourse/lib/scheduler/defer.rb:79:in block (2 levels) in start_thread’

环境

在 Stack Overflow 上找到了解决 Ruby 中此问题的方法:

似乎是某些版本的 libc 在解析 DNS 路由时存在问题。在花费数小时寻找解决方案后,您只需在代码开头添加 require 'resolv-replace' 即可。

更多信息:Use Ruby DNS resolver to handle DNS timeout in Net::HTTP by pranas · Pull Request #597 · ruby/ruby · GitHub

希望这能帮助到未来的某个人。