我在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”,但它没有帮助。
感谢!!!
答案 0 :(得分:1)
您最有可能达到响应时间超时或内存/服务器资源限制。
你永远不应该在任何应用程序中真正返回大量数据,更不用说Web应用程序,因为数据变得毫无意义。 如果这是一个视图然后使用分页,所以一次只处理少量数据(人们只是无法理解该数量的记录)
如果你需要这个用于某些统计分析,那么运行一个后台任务(可能是rake任务?)来收集数据,分析它并输出一个包含所有统计数据的简单单个记录
如果这是某种Feed或导出功能,那么rake任务中的后台作业将再次生成最终的xml文档文件,该文件存储为可在适当时间由您的应用程序提供的资产,这是最佳解决方案
除了避免让用户坐着并盯着显示器等待很长时间以外的其他原因,您也有可能会占用您的服务器,其他访问者的响应时间会急剧下降。
这真的是不好的做法。这需要金钱和时间。您(带宽和服务器资源),您的访问者必须等待更长时间(时间就是金钱),如果在云端支付每mb主机,您将获得更大的托管账单,所以我真的敦促您改变您的方法。
根据经验,做google做什么,每页提供10个结果(有多少冲浪者在搜索结果中超过第10页?)
答案 1 :(得分:1)
您是否尝试过更换网络服务器并使用mongrel或thin?您还应该尝试更改Ruby和Rails的版本。
我会说你完全有可能在堆栈的某些部分遇到错误,你需要尽可能地排除错误。
尝试打开控制台并在受影响的记录上运行@ model.to_param。它看起来与其他记录不同吗?它有特殊字符吗?
答案 2 :(得分:0)
事实证明,数据库的几行中存在非UTF-8(UTF-16?)字符。具体来说,Microsoft Word创建的那些智能引号,撇号和省略号。用户已将Word剪切并粘贴到Web表单中。
我想知道是否有办法在PostgreSQL中强制使用UTF-8来防止这种情况发生......