2

我在 Ubuntu 上使用 PostgreSQL 8.4 和 WEBrick 运行 Rails 3。

它一直工作正常,但是当显示一个大表(数百行)时,出现了问题。浏览器显示页面仍在加载,但看起来查询结果被截断或 Rails 正在中断。日志或控制台中没有错误。

下面的第 8 行是格式错误的 HTML。它出现在表格的第 140 行附近。但它继续在下面的行之后显示更多行。

<tr class="from_hc"> 
  <td class="date_and_time">Jul 13, 2011 11:00 AM</td> 
  <td class="name">Kim Orange</td> 
  <td>PHYSICAL_ACTIVITY</td> 
  <td>text text</td> 
  <td>ok</td> 
  <td></td> 
  <td><a href="/messag/a></td>
</tr>
<tr class="from_hc"> 
  <td class="date_and_time">Jul 13, 2011 11:00 AM</td> 
  <td class="name">Tom White</td> 
  <td>PHYSICAL_ACTIVITY</td> 
  <td>text text</td> 
  <td>ok</td> 
  <td></td> 
  <td><a href="/messages/260/edit">Edit</a></td> 
</tr>

返回的行数有问题吗?是否需要在 Rails、PostgreSQL 或 WEBrick 中设置配置?这可能是 SSL 的问题吗?什么可能导致这种情况?

相同的代码和表格在 Heroku 上运行良好,所以我想知道这是否是 WEBrick 配置问题...

我增加了 Postgres 的“shared_memory”,但没有帮助。

谢谢!!!

4

3 回答 3

1

您很可能遇到响应超时或内存/服务器资源限制。

你永远不应该在任何应用程序中真正返回大量数据,更不用说网络应用程序,因为数据变得完全没有意义。如果这是用于视图,则使用分页,因此一次只处理少量数据(人们只是无法理解那么多记录)

如果你需要它来进行一些统计分析,那么运行一个后台任务(也许是 rake 任务?)来收集数据,分析它并输出一个简单的单个记录,计算所有的统计数据

如果这是某种提要或导出功能,那么 rake 任务中的后台作业将生成最终的 xml 文档文件,该文件存储为资产,您的应用程序可以在适当的时间提供该文件是最佳解决方案

除了避免让用户长时间坐在显示器上等待之外,您还面临着占用服务器的危险,并且其他访问者的响应时间将急剧下降。

这是非常糟糕的做法。它需要金钱和时间。您(带宽和服务器资源),您的访问者都必须等待更长的时间(时间就是金钱),如果在云上按 mb 主机付费,您将获得更大的托管费用,所以我真的敦促您改变您的方法。

根据经验,按照谷歌的做法,每页提供 10 个结果(有多少冲浪者在搜索结果中超过第 10 页?)

于 2011-07-23T06:41:57.327 回答
1

您是否尝试过更换 Web 服务器并使用 mongrel 或 Thin?您还应该尝试更改 Ruby 和 Rails 的版本。

我会说你完全有可能在堆栈的某些部分遇到错误,你需要尽可能地排除这种情况。

尝试打开控制台并在受影响的记录上运行 @model.to_param。它看起来与其他记录不同吗?它有特殊字符吗?

于 2011-08-12T23:54:58.153 回答
0

事实证明,数据库的几行中有非 UTF-8(UTF-16?)字符。具体来说,Microsoft Word 创建的那些智能引号、撇号和省略号。用户已从 Word 剪切并粘贴到 Web 表单中。

我想知道将来是否有办法在 PostgreSQL 中强制使用 UTF-8 来防止这种情况发生......

于 2011-08-17T16:07:21.560 回答