Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Unknown ruby processes show up in "top" when running cronjob

Reply
Thread Tools

Unknown ruby processes show up in "top" when running cronjob

 
 
observatory@gmail.com
Guest
Posts: n/a
 
      11-20-2006
Hello,

I have a ruby (rails) cronjob.
When I monitor the execution of the cronjob with top, I notice that 2
more processes show up in there (instead of just one for my cronjob).

My cronjob captures the output of running a python script (with the
`python script.py` syntax). Can this be the cause? Why?

Thanks for any tips

 
Reply With Quote
 
 
 
 
observatory@gmail.com
Guest
Posts: n/a
 
      11-21-2006
I don't think that's the case, I'm talking about two more "ruby"
processes showing up there. (Python also appears)

I created two test scripts, one in ruby that launches (with `python
script.py`) the other written in python (I also put some sleep(5) calls
in there for better observation). And as it is normal, only one "ruby"
process appears and for the duration of the python script, a "python"
process.

This probably has something to do with rails, but I don't know what.

Thanks

Paul Lutus wrote:
> http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
>
> > Hello,
> >
> > I have a ruby (rails) cronjob.
> > When I monitor the execution of the cronjob with top, I notice that 2
> > more processes show up in there (instead of just one for my cronjob).
> >
> > My cronjob captures the output of running a python script (with the
> > `python script.py` syntax). Can this be the cause?

>
> Yes.
>
> > Why?

>
> Because the cronjob has its own process ID (1), then it needs to execute the
> Python interpreter (2) which runs the Python script (3). All separate
> processes.
>
> --
> Paul Lutus
> http://www.arachnoid.com


 
Reply With Quote
 
 
 
 
observatory@gmail.com
Guest
Posts: n/a
 
      11-21-2006
Maybe it's related to the fact that the rails script/runner doesn't
like that piping (`python script.py`). I noticed that those 2 ruby
processes appear as soon as a "sh" process briefly appears in top and
then vanishes.

Does anyone have any suggestions?

Thanks

(E-Mail Removed) wrote:
> I don't think that's the case, I'm talking about two more "ruby"
> processes showing up there. (Python also appears)
>
> I created two test scripts, one in ruby that launches (with `python
> script.py`) the other written in python (I also put some sleep(5) calls
> in there for better observation). And as it is normal, only one "ruby"
> process appears and for the duration of the python script, a "python"
> process.
>
> This probably has something to do with rails, but I don't know what.
>
> Thanks
>
> Paul Lutus wrote:
> > (E-Mail Removed) wrote:
> >
> > > Hello,
> > >
> > > I have a ruby (rails) cronjob.
> > > When I monitor the execution of the cronjob with top, I notice that 2
> > > more processes show up in there (instead of just one for my cronjob).
> > >
> > > My cronjob captures the output of running a python script (with the
> > > `python script.py` syntax). Can this be the cause?

> >
> > Yes.
> >
> > > Why?

> >
> > Because the cronjob has its own process ID (1), then it needs to execute the
> > Python interpreter (2) which runs the Python script (3). All separate
> > processes.
> >
> > --
> > Paul Lutus
> > http://www.arachnoid.com


 
Reply With Quote
 
observatory@gmail.com
Guest
Posts: n/a
 
      11-21-2006
I found the cause:

It's because of some "net/http" calls I make in the ruby script. It
seems that ruby forks two more processes when doing that. (I 'head'
certain web addresses.)
The forked processes remain in memory for the duration of the main
process.

You can imagine why this is very annoying; the same calls are made by
my long running rails FastCGI processes, this means that there will be
3 times as many FastCGI processes reported as running at a given time -
and DreamHost's procwatch will start killing them (too much memory
used) resulting in error screens.

Is there a way to prevent the apparition of these processes when making
net/http calls ? Or at least to make them go away - without killing the
main process?

Thanks

(E-Mail Removed) wrote:
> Maybe it's related to the fact that the rails script/runner doesn't
> like that piping (`python script.py`). I noticed that those 2 ruby
> processes appear as soon as a "sh" process briefly appears in top and
> then vanishes.
>
> Does anyone have any suggestions?
>
> Thanks
>
> (E-Mail Removed) wrote:
> > I don't think that's the case, I'm talking about two more "ruby"
> > processes showing up there. (Python also appears)
> >
> > I created two test scripts, one in ruby that launches (with `python
> > script.py`) the other written in python (I also put some sleep(5) calls
> > in there for better observation). And as it is normal, only one "ruby"
> > process appears and for the duration of the python script, a "python"
> > process.
> >
> > This probably has something to do with rails, but I don't know what.
> >
> > Thanks
> >
> > Paul Lutus wrote:
> > > (E-Mail Removed) wrote:
> > >
> > > > Hello,
> > > >
> > > > I have a ruby (rails) cronjob.
> > > > When I monitor the execution of the cronjob with top, I notice that 2
> > > > more processes show up in there (instead of just one for my cronjob).
> > > >
> > > > My cronjob captures the output of running a python script (with the
> > > > `python script.py` syntax). Can this be the cause?
> > >
> > > Yes.
> > >
> > > > Why?
> > >
> > > Because the cronjob has its own process ID (1), then it needs to execute the
> > > Python interpreter (2) which runs the Python script (3). All separate
> > > processes.
> > >
> > > --
> > > Paul Lutus
> > > http://www.arachnoid.com


 
Reply With Quote
 
Pierre-Charles David
Guest
Posts: n/a
 
      11-22-2006
2006/11/20, Paul Lutus <(E-Mail Removed)>:
> (E-Mail Removed) wrote:
>
> > Hello,
> >
> > I have a ruby (rails) cronjob.
> > When I monitor the execution of the cronjob with top, I notice that 2
> > more processes show up in there (instead of just one for my cronjob).
> >
> > My cronjob captures the output of running a python script (with the
> > `python script.py` syntax). Can this be the cause?

>
> Yes.
>
> > Why?

>
> Because the cronjob has its own process ID (1), then it needs to execute the
> Python interpreter (2) which runs the Python script (3). All separate
> processes.


No: Python does not create two processes. However, the backtick
command uses a sub-shell to execute the command line, so: cron
launches Ruby (1 process), which launches "/bin/sh -c 'python
script.py'" (1 process), which launches Python on the script (1
process). See the documentation for Kernel#` (the actual method
implementing the backtick command).

If you don"t need shell-specific features (pipes and redirections) in
the command line you execute, you can fork the Ruby process and then
call exec to *replace* that child process with python, thus bypassing
the intermediate shell. It's probably not worth the trouble though.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Problem with cronjob and ruby script Matthew Lagace Ruby 19 06-05-2009 08:51 PM
Assign an unknown value to an unknown variable Vincent Arnoux Ruby 1 08-11-2006 06:12 PM
unknown Processes ??? SKS Computer Support 11 09-29-2004 07:35 PM
How do I: Main thread spawn child threads, which child processes...control those child processes? Jeff Rodriguez C Programming 23 12-09-2003 11:06 PM
How Do I Use CGI->System Call As CronJob? Public Interest Perl Misc 10 10-31-2003 11:00 PM



Advertisments