我知道这是一个常见问题,通常解决方案是生成一个单独的密钥以便发布.我已经完成了几次,我在开发人员控制台中的API密钥包含两个不同的SHA1指纹:一个用于从AndroidStudio调试,另一个用于从我自己的密钥库发布.我已使用相同的密钥库对应用进行了签名,并在控制台中启用了Google Maps Android API v2.但是地图活动仍然只显示左下角带有"Google"的白色屏幕.
有什么建议如何解决这个问题?
ActionCable在生产中不起作用.适用于开发,但不适用于生产.
在Ubuntu 14.04上使用Puma运行Nginx.我已经检查过redis-server已启动并正在运行.
Rails -v 5.0.0.1
production.log:
INFO -- : Started GET "/cable/"[non-WebSocket] for 178.213.184.193 at 2016-11-25 14:55:39 +0100
ERROR -- : Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: close, HTTP_UPGRADE: )
INFO -- : Finished "/cable/"[non-WebSocket] for 178.213.184.193 at 2016-11-25 14:55:39 +0100
Run Code Online (Sandbox Code Playgroud)
客户要求:
GET ws://mityakoval.com/cable HTTP/1.1
Host: mityakoval.com
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://mityakoval.com
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36
Accept-Encoding: gzip, deflate, …Run Code Online (Sandbox Code Playgroud) 所以我的应用程序导出了一个11.5 MB的CSV文件,并且基本上使用了所有永远不会被释放的RAM.
CSV的数据来自数据库,在上面提到的情况下,整个数据都被导出.
我以下列方式使用Ruby 2.4.1标准CSV库:
export_helper.rb:
CSV.open('full_report.csv', 'wb', encoding: UTF-8) do |file|
data = Model.scope1(param).scope2(param).includes(:model1, :model2)
data.each do |item|
file << [
item.method1,
item.method2,
item.methid3
]
end
# repeat for other models - approx. 5 other similar loops
end
Run Code Online (Sandbox Code Playgroud)
然后在控制器中:
generator = ExportHelper::ReportGenerator.new
generator.full_report
respond_to do |format|
format.csv do
send_file(
"#{Rails.root}/full_report.csv",
filename: 'full_report.csv',
type: :csv,
disposition: :attachment
)
end
end
Run Code Online (Sandbox Code Playgroud)
在一次请求之后,puma进程加载了整个服务器RAM的55%并保持这样,直到最终完全耗尽内存.
例如,在本文中,生成一百万行75 MB CSV文件只需要1 MB RAM.但是没有涉及DB查询.
服务器有1015 MB RAM + 400 MB交换内存.
所以我的问题是:
提前致谢!