我有以下技术堆栈:
Agile插件和Easy Gantt插件都包含拖放视觉UI,删除项目会导致PUT请求。我不知道除了那些插件之外,Redmine是否在任何地方都使用过PUT请求。
问题是,这些PUT请求非常慢,没有明显的原因。它们需要大约120000毫秒(120秒,2分钟)才能完成。
以下是log/production.log
的日志:
Started PUT "/agile/board" for 127.0.0.1 at 2016-10-23 20:08:03 +0300
Processing by AgileBoardsController#update as */*
Parameters: {"issue"=>{"status_id"=>"3"}, "positions"=>{"2"=>{"position"=>"0"}}, "id"=>"2"}
Current user: admin (id=1)
Rendered mailer/_issue.text.erb (4.8ms)
Rendered mailer/issue_edit.text.erb within layouts/mailer (8.2ms)
Rendered mailer/_issue.html.erb (1.3ms)
Rendered mailer/issue_edit.html.erb within layouts/mailer (4.3ms)
Rendered plugins/redmine_agile/app/views/agile_boards/_issue_card.html.erb (35.0ms)
Completed 200 OK in 120519ms (Views: 33.0ms | ActiveRecord: 41.0ms)
此处的日期是发起PUT请求的时刻。那么, RoR在所有这些2分钟内做了什么,如果它在33ms内呈现视图并在41ms 中使用ActiveRecords?我可以看一下其他什么活动?
以下是来自Firebug的请求标头:
Host: redmine.local
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: */*
Accept-Language: ru,ru-RU;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-CSRF-Token: ZKCHb1NeenfN6EVttTPHMiGItsTsKWDJPm5Q2VqaiYRRn420TH67pnwfRpWo/mQdDOWDhZNe1snDy+eP327PfQ==
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://redmine.local/projects/myproject/agile/board
Content-Length: 60
Cookie: _redmine_session=MjI1Q <... lots of data ...>f
X-Compress: 1
Proxy-Authorization: c7f14568a48248797f198ea6e3c7d7c4f39185ce12aeac08439a9d6726a4cfd5612d4cef98c0ca43
Connection: keep-alive
以下是服务器的答案:
Cache-Control: max-age=0, private, must-revalidate
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Sun, 23 Oct 2016 17:10:03 GMT
Etag: W/"0ec2e6c508ed9d99f224fc23e1fd3dbf"
Server: nginx/1.10.1 + Phusion Passenger 5.0.30
Set-Cookie: _redmine_session=VlZkakNTT <... lots of data ...>1f08a39ea5c63; path=/; HttpOnly
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: 30b3a5f8-edb0-419a-b5f1-c6603439438a
X-Runtime: 120.523361
X-XSS-Protection: 1; mode=block
status: 200 OK
x-powered-by: Phusion Passenger 5.0.30
在服务器的答案中“日期”字段显示从启动PUT请求的那一刻起2分钟,所以我猜服务器在那些2分钟之后开始构建这个答案......什么?
在Firebug的时间面板中,DNS解析,连接和发送有三个零(我在同一台机器上连接到我的本地服务器),120525ms等待和8ms接收。
以下是来自Nginx access.log
的此请求的日志记录:
127.0.0.1 - - [23 / Oct / 2016:20:10:03 +0300]“PUT / agile / board HTTP / 1.1”200 920“http://redmine.local/projects/myproject/agile/board”“Mozilla / 5.0(X11; Linux x86_64; rv:45.0)Gecko / 20100101 Firefox / 45.0“
我尝试用Apache2 + Passenger替换Nginx + Passenger堆栈,但问题仍然存在。即使我开始使用Webrick,也会有2分钟超时,所以我相信它与RoR有关,而不是网络服务器。
我没有编写Ruby on Rails应用程序的经验,只安装它们。
答案 0 :(得分:0)
问题是after_save
正在通过sendmail发送电子邮件,而sendmail却停留在相对众所周知的错误上,而我的不合格主机名(此处的主机名)未知;睡觉重试&#34;。在我搜索了这个错误并确保我的主机名的正确FQN在/etc/hosts
之后,2分钟延迟变为2秒延迟。
127.0.0.1 localhost localhost.localdomain my-host-name