小编use*_*424的帖子

获取异步http请求以在rails 3beta4/ruby​​ 1.9.2-rc2/thin/eventmachine上工作

我一直在尝试在我的应用程序中使用基本的异步HTTP调用.

我尝试在我的应用程序中使用Rails 3异步堆栈演示中的一些代码:http://github.com/igrigorik/async-rails,但我得到"不能从根光纤中产生"而且我没有想从哪里开始.这是我追踪的最高点:

(eval):10:in `yield'
(eval):10:in `get'
app/controllers/home_controller.rb:62:in `index'
/Users/ct/.rvm/gems/ruby-1.9.2-rc2@og/gems/actionpack-3.0.0.beta4/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/Users/ct/.rvm/gems/ruby-1.9.2-rc2@og/gems/actionpack-3.0.0.beta4/lib/abstract_controller/base.rb:145:in `process_action'
Run Code Online (Sandbox Code Playgroud)

我的索引控制器方法很简单:

def index
  http = EM::HttpRequest.new("http://www.google.com/").get
  render :text => http.response
end
Run Code Online (Sandbox Code Playgroud)

我有所有正确的宝石,我有1.9.2-rc2,rails 3 beta 4,而且我很瘦.我也得到了async-rails应用程序本身使用相同的rvm和gemset运行良好.eventmachine reactor肯定在我的应用程序中运行.我喜欢任何有关如何使其正常工作的提示!

asynchronous thin eventmachine ruby-on-rails-3

5
推荐指数
0
解决办法
1103
查看次数

在postgres的pg_dump中限制I / O?

因此,我们在具有16GB RAM的计算机上拥有32GB的生产数据库。多亏了缓存,这通常根本不是问题。但是,每当我启动数据库的pg_dump时,来自应用服务器的查询就会开始排队,几分钟后,队列就消失了,我们的应用陷入停顿。

我将第一个承认我们存在查询性能问题,并且正在解决这些问题。同时,我希望能够每晚运行pg_dump,这种方式可以从数据库中吸取信息,并且不会降低应用程序的性能。我不在乎是否要花几个小时。我们的应用程序未运行任何DDL,因此我不必担心锁争用。

为了解决这个问题,我正在使用niceice和ionice来运行pg_dump。不幸的是,这不能解决问题。

nice ionice -c2 -n7 pg_dump -Fc production_db -f production_db.sql
Run Code Online (Sandbox Code Playgroud)

即使有了ionice,我仍然看到上面的问题。似乎I / O等待,并且大量搜寻导致了该问题。

vmstat 1 
Run Code Online (Sandbox Code Playgroud)

向我显示iowait徘徊在20-25%左右,有时会飙升至40%。实际CPU%的波动范围是2%-5%,有时会飙升至70%。

我认为锁不是罪魁祸首。当我运行此查询时:

select pg_class.relname,pg_locks.* from pg_class,pg_locks where pg_class.relfilenode=pg_locks.relation;
Run Code Online (Sandbox Code Playgroud)

我只看到标记为已授予='t'的锁。我们通常不会在生产中运行任何DDL,因此锁似乎不是问题。

这是启用了WCHAN列的ps的输出:

PID WIDE               S TTY          TIME COMMAND
3901 sync_page         D ?        00:00:50 postgres: [local] COPY
3916 -                 S ?        00:00:01 postgres:  SELECT
3918 sync_page         D ?        00:00:07 postgres:  INSERT
3919 semtimedop        S ?        00:00:04 postgres:  SELECT
3922 -                 S ?        00:00:01 postgres:  SELECT
3923 -                 S ?        00:00:01 postgres:  SELECT
3924 -                 S …
Run Code Online (Sandbox Code Playgroud)

sql sysadmin postgresql database-backups

5
推荐指数
1
解决办法
2364
查看次数