Seems like ur process getting crashed while its trying to start.
Try to see the app's stderr.

On Thursday, April 4, 2013, Ben Noordhuis wrote:

> On Thu, Apr 4, 2013 at 3:00 AM, node newbie <[email protected]>
> wrote:
> > I'm having issue setting up a node app as a service under Fedora 17.
> >
> > If I start the app/service manually by using:
> >
> > node server.js
> >
> > All works fine, the server starts and uses almost no CPU.
> >
> > But this needs to be an always running service that needs to be
> restarted if
> > it crashes and needs to be started at boot time. To do this I've created
> a
> > start script in init.d like so:
> >
> > #!/bin/bash
> > #
> > # chkconfig: - 99 01
> > # description: node server
> > . /etc/rc.d/init.d/functions
> >
> > USER="nodeuser"
> > DAEMON="/usr/local/bin/supervisor"
> > ROOT_DIR="/home/nodeuser/nodeserver"
> >
> > SERVER="$ROOT_DIR/server.js"
> > LOG_FILE="$ROOT_DIR/app.js.log"
> >
> > LOCK_FILE="/var/lock/subsys/node-server"
> >
> > do_start()
> > {
> >         if [ ! -f "$LOCK_FILE" ] ; then
> >                 echo -n $"Starting $SERVER: "
> >                 runuser -l "$USER" -c "$DAEMON $SERVER >> $LOG_FILE &" &&
> > echo_success || echo_failure
> >                 RETVAL=$?
> >                 echo
> >                 [ $RETVAL -eq 0 ] && touch $LOCK_FILE
> >         else
> >                 echo "$SERVER is locked."
> >                 RETVAL=1
> >         fi
> > }
> > do_stop()
> > {
> >         echo -n $"Stopping $SERVER: "
> >         pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk
> > '{print $2}'`
> >         kill -9 $pid > /dev/null 2>&1 && echo_success || echo_failure
> >         RETVAL=$?
> >         echo
> >         [ $RETVAL -eq 0 ] && rm -f $LOCK_FILE
> > }
> >
> > case "$1" in
> >         start)
> >                 do_start
> >                 ;;
> >         stop)
> >                 do_stop
> >                 ;;
> >         restart)
> >                 do_stop
> >                 do_start
> >                 ;;
> >         *)
> >                 echo "Usage: $0 {start|stop|restart}"
> >                 RETVAL=1
> > esac
> > exit $RETVAL
> >
> >
> >
> > If I start the server using this method the node process uses significant
> > CPU (on my VPS it sits at 15-20% CPU while idle).
> >
> > Doing an strace on the process gives output like (and never stops):
> >
> > epoll_wait(5, {?} 0xbfe55240, 1024, 85) = 1
> > clock_gettime(CLOCK_MONOTONIC, {2817, 89100171}) = 0
> > read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
> > clock_gettime(CLOCK_MONOTONIC, {2817, 89464229}) = 0
> > epoll_wait(5, {}, 1024, 16)             = 0
> > clock_gettime(CLOCK_MONOTONIC, {2817, 105857441}) = 0
> > clock_gettime(CLOCK_MONOTONIC, {2817, 105979957}) = 0
> > futex(0x88656e4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x88656e0, {FUTEX_OP_SET,
> 0,
> > FUTEX_OP_CMP_GT, 1}) = 1
> > futex(0x88656c4, FUTEX_WAKE_PRIVATE, 1) = 1
> > futex(0x88656e4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x88656e0, {FUTEX_OP_SET,
> 0,
> > FUTEX_OP_CMP_GT, 1}) = 1
> > futex(0x88656c4, FUTEX_WAKE_PRIVATE, 1) = 1
> > futex(0x88656e4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x88656e0, {FUTEX_OP_SET,
> 0,
> > FUTEX_OP_CMP_GT, 1}) = 1
> > futex(0x88656c4, FUTEX_WAKE_PRIVATE, 1) = 1
> > futex(0x88656e4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x88656e0, {FUTEX_OP_SET,
> 0,
> > FUTEX_OP_CMP_GT, 1}) = 1
> Is that strace output from your node process or node-supervisor's?
>
> If the epoll_wait() timeouts are always that short (85 ms and 16 ms in
> the snippet you posted), that would suggest there is a timer somewhere
> that is firing continuously.
>
> If you're certain it's not node-supervisor, try profiling your node
> process to find out where it's spending its time.  Start it with
> `--prof --log` and run the generated v8.log through the tick
> processor.  You build it like this:
>
>   $ cd deps/v8/build
>   $ ln -s ../../../tools/gyp
>   $ cd ..
>   $ make -j8 native
>   $ tools/linux-tick-processor /path/to/v8.log
>
> If your application uses the cluster module, you should run `--prof
> --log --logfile=%p.log` instead and run each file through the tick
> processor separately.  --logfile=%p.log only works with master,
> though.
>
> --
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]<javascript:;>
> To unsubscribe from this group, send email to
> [email protected] <javascript:;>
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:;>.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
Arunoda Susiripala

@arunoda <http://twitter.com/arunoda>
<http://gplus.to/arunoda>https://github.com/arunoda
http://www.linkedin.com/in/arunoda

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to