1

我无法在 apache 后面的乘客应用程序中上传 8.4 MB 文件。通过 scp 传输相同的文件需要 4.1 分钟。

错误回溯:

[ pid=10222 file=ext/apache2/Hooks.cpp:727 time=2010-05-18 07:13:14.842 ]:mod_passenger 中出现意外错误:接收 HTTP 上传数据时出错:对等方重置连接 (104)回溯:在 'boost::shared_ptr Hooks::receiveRequestBody(request_rec*, const char*)' (Hooks.cpp: 1084) in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:459)

注意:用户没有取消或任何事情。他在火狐上:-)

日志中看到的其他错误是:

  1. [ pid=16593 file=ext/apache2/Hooks.cpp:727 time=2010-05-23 23:06:12.156 ]:mod_passenger 中的意外错误:看起来浏览器没有完成文件上传:它说它会上传 6610086\ 字节,但它在发送 610155 字节后关闭了连接。用户可能在浏览器中单击了停止,或者他的 Internet 连接停止。回溯:在 'boost::shared_ptr Hooks::receiveRequestBody(request_rec*, const char*)' (Hooks.cpp: 1084) in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp: 459)

    注意:用户没有取消或任何事情。他在 IE6 上 :-)

  2. [ pid=28995 file=ext/apache2/Hooks.cpp:727 time=2010-05-17 00:40:18.697 ]:mod_passenger 中出现意外错误:无法将数据发送到 ApplicationPool 服务器:write() 失败:管道损坏(32) Backtrace: in 'virtual boost::shared_ptr Passenger::ApplicationPoolServer::Client::get(const Passe\ nger::PoolOptions&)' (ApplicationPoolServer.h: 402) in 'int Hooks::handleRequest(request_rec*) ' (Hooks.cpp: 523)

问题是:

  1. 为什么文件没有上传?
  2. 在 apache 中上传文件以提高吞吐量和性能的最佳实践。
  3. 我可以在 apache 之外处理上传,然后将其交给乘客吗
  4. 也试过 mod_porter,http ://modporter.com ,似乎没有帮助。
  5. 乘客中是否有调试模式 - 详细日志记录

PS:使用 RubyOnRails 在 apache 上部署 mod_rails,http://www.modrails.com/和 ruby​​ 企业版。TimeOut 在 apache virtalhost 中设置为 1200。

问候,
迪帕克

4

2 回答 2

1

不幸的是,这可能是一个 Safari 错误。请参阅此乘客错误报告:

无法在乘客应用程序中上传 apache

还有这个古老的 webkit 错误报告:

https://bugs.webkit.org/show_bug.cgi?id=5760

然后指向苹果的一个错误报告,该报告要么无法查看,要么已被关闭。我刚刚在 10.6.4 和乘客 2.2.14 上遇到了 safari 5.0 (6533.16) 的问题,所以很明显问题还没有解决。非常令人沮丧。

解决方案是为您的虚拟主机关闭 keepalive。

于 2010-06-30T17:57:27.090 回答
0

如果上传 610155 字节需要 1200 秒怎么办?这似乎完全合理。HTTP 传输通常不像 scp 这样的机制那么激进,并且由于 HTTP 在上传方面并不是特别有效,因此可能会拖得更多。

您可以尝试打开超时,如果这对情况有直接影响,或者记住某些客户端可能通过防火墙连接,无论出于何种原因,防火墙都会将连接限制为最长时间,通常为十分钟左右。

您可以从具有相似速度的连接中复制问题吗?还是在更大的文件上?

于 2010-05-25T14:22:41.667 回答