我想知道在生产环境中是否有任何关于在Heroku上自动调整dynos和worker的好解决方案(可能是针对每个人的不同解决方案,因为它们非常不相关).对于这个,您/公司使用什么?
我找到了很多选择,但对于生产环境来说,它们似乎都不是很成熟.有Heroscale,它似乎引入了一些延迟,因为它不在本地运行,我也听说过一些停机时间.对delayed_jobs进行了修改,这些修改已经很长时间没有更新,并且当前的捆绑包存在一些问题.还有一些与reque相关的替代方案,似乎没有很好地处理一些HTTP异常,导致应用程序崩溃,而其他似乎需要一个始终运行的工作程序来安排其他工作程序,并且还可能遭受一些HTTP异常问题.
好.到底.现在,在Rails3的生产环境中使用Heroku的dynos和worker进行自动缩放的目的是什么?
提前致谢.
嗯,标题是自我解释的.但是,让我详细说明一下.首先,我使用Mongoid,一个Gem,用于将MongoDB与rails应用程序一起使用.
#1)我有一个大型集合,其中包含有关地图的信息.地图嵌入了很多图块,每个图块都引用了地形集合,用户集合以及其他一些信息.因此,如果我从地图中获取所有瓷砖,我将拥有一个非常大的结构.但是,我想缓存一个包含仅包含地形信息的矩阵的结构.为了做到这一点,我选择所有的瓷砖(因此,他们所有不需要的信息),并只使用地形领域.如何仅选择Mongoid上的地形场?我尝试使用select在几种方式上操作,但我没有设法做到这一点..(顺便说一下,只是为了举例说明,我使用"Map.first.tiles"行访问tiles数组).
#2)嗯..我已经在这里了,所以,为什么不问这个.我应该在模型上使用inverse_of字段吗?我没有在任何地方使用它,一切似乎都很完美.我不明白为什么需要它,因为确定把它们放在哪里以及它们的反转是非常直接的.
提前致谢.费尔南多.
我有一个同时具有 :id 和 :group_id 字段的结构。我希望检索 :id 等于 :group_id 的所有数据。
我目前正在使用 mongoid,但我认为该操作的完成方式与使用 Rails3 的 ActiveRecord 时的操作方式相同。
无论如何。我试图使用Message.where(:group_id => :id),它应该返回,例如, this: => #<Message _id: 4e38aa132748440a7e00007d, group_id: BSON::ObjectId('4e38aa132748440a7e00007d')>。但它根本不起作用(看起来好像它确实不应该起作用,但是它应该如何起作用呢?)
如何查询 mongoid (或活动记录)以仅获取 :id 等于 :group_id 的消息?
编辑:只是为了表明这些值实际上完全相同:
ruby-1.9.2-p180 :088 > Message.first.id
=> BSON::ObjectId('4e38aa132748440a7e00007d')
ruby-1.9.2-p180 :089 > Message.first.group_id
=> BSON::ObjectId('4e38aa132748440a7e00007d')
Run Code Online (Sandbox Code Playgroud)
EDIT2:这些不起作用(它们至少有一条匹配的消息(上面的示例)):
ruby-1.9.2-p180 :091 > Message.where("group_id = id").count
=> 0
ruby-1.9.2-p180 :092 > Message.where("group_id == id").count
=> 0
Run Code Online (Sandbox Code Playgroud)
EDIT3:以下是应返回的消息示例:http://cl.ly/3q1r20421S3P1921101D
EDIT4:另一个奇怪的地方:
ruby-1.9.2-p180 :034 > Message.where("this._id = this.group_id").each {
|m| puts "#{m.id} = #{m.group_id}" …Run Code Online (Sandbox Code Playgroud) 好.我有点生气,因为我在带有8GB内存的i7 MPB上运行Mac OS Lion,而且Safari的性能始终会降低.
因此,我注意到不仅Safari.app消耗了异常的内存量,而且它的一对名为"Safari Web Content"(消费更多).
对此感到恼火,我决定杀死那个"Safari Web Contant"实例(它们总是成对出现,好奇.但是,无论如何),毕竟Safari.app是主要的应用程序.发生了什么?您知道Safari中的所有选项卡何时自动刷新?出现相同的效果:Safari Web Content的内存使用率下降(退出,然后从零点重新启动),所有选项卡都会在选择时刷新.它让我相信那些标签的自动刷新有时会发生,只不过是一种以非常奇怪的方式释放内存的方式(用葡萄牙语称为"chuncho").
好的,那又怎样?好吧,如果这似乎(至少对我来说)是更好地处理内存消耗的"官方"方式,我想如果我做同样的话也没关系,对吧?
因此,我创建了一个小脚本,每分钟作为crontab作业运行,检查"Safari Web Content"内存使用率是否过高,如果是,则将其杀死.
这里是:
#!/bin/bash
filename=".tt_0e92309ei2390i209ei9203"
LIMIT=6
ps -eo pmem,pid,args | grep WebProcess.app | grep -v grep | cut -d"/" -f1 > $filename
while read line
do
mem=`echo "${line}"| awk '{print $1}'`
mem=$(echo $mem | sed -e 's/,/./g')
pid=`echo "${line}"| awk '{print $2}'`
status=$(echo "$mem > $LIMIT" | bc -l)
if [ "$status" -eq "1" ]
then
kill $pid
fi
done < $filename
rm $filename
Run Code Online (Sandbox Code Playgroud)
不介意随机命名的文件名,也不介意我可能做过的奇怪事情("chunchos"):P该脚本基本上检查是否有任何"Safari Web内容"进程消耗超过我的内存的$ …
问题非常简单.我想知道是否有方法可以在浏览时发现浏览器发送的HTTP请求.例如,当我点击发送PUT方法的某个链接时会发生什么?我的意思是,我希望我能确定浏览器发送到该网站的确切HTTP请求.此外,我想稍后在Curl上重现该请求.基本上,我想检查浏览器发送的请求,以便稍后通过Curl命令(命令,而不是库)自动执行该任务.
提前致谢!
费尔南多.
mongodb ×2
mongoid ×2
activerecord ×1
automation ×1
curl ×1
delayed-job ×1
heroku ×1
http ×1
http-headers ×1
macos ×1
osx-lion ×1
resque ×1
safari ×1
scaling ×1