# Nginx causes cpu burst problem when it is received USR1 signal by logrotate script

**URL:** <https://www.ruby-forum.com/t/nginx-causes-cpu-burst-problem-when-it-is-received-usr1-signal-by-logrotate-script/197648>\
**Category:** NGINX\
**Created:** [October 18, 2010, 9:55am UTC](https://www.ruby-forum.com/t/nginx-causes-cpu-burst-problem-when-it-is-received-usr1-signal-by-logrotate-script/197648 "2010-10-18T09:55:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![okkezSS](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/85f322/32.png) [@okkezSS](https://www.ruby-forum.com/u/okkezSS)\
**Post date:** [October 18, 2010, 9:55am UTC](https://www.ruby-forum.com/t/nginx-causes-cpu-burst-problem-when-it-is-received-usr1-signal-by-logrotate-script/197648/1 "2010-10-18T09:55:35Z")

</div>

Hi,

I’m using nginx/0.7.67 on the freebsd-6.4  
$ nginx -V  
nginx version: nginx/0.7.67  
built by gcc 2.95.3 20010315 (release)  
configure arguments: --prefix=/usr/local  
–conf-path=/usr/local/conf/nginx/nginx.conf  
–pid-path=/usr/local/var/run/nginx.pid  
–lock-path=/usr/local/var/run/nginx.lock  
–http-client-body-temp-path=/usr/local/var/run/nginx/client\_body\_temp  
–http-proxy-temp-path=/usr/local/var/run/nginx/proxy\_temp  
–error-log-path=/usr/local/logs/nginx/error  
–http-log-path=/usr/local/logs/nginx/access --with-select\_module  
–with-http\_perl\_module --with-debug --with-http\_stub\_status\_module

I’m using the following script as root user for logrotation:

```auto
#!/bin/sh

mv /usr/local/logs/nginx/error /usr/local/logs/nginx/error.`date
"+%Y%m%d"`
mv /usr/local/logs/nginx/access /usr/local/logs/nginx/access.`date
"+%Y%m%d"`

kill -USR1 `cat /usr/local/var/run/nginx.pid`

find /usr/local/logs/nginx/ -ctime +30 -exec rm {} \;
```

Log rotation succeed. but,  
Occasionally the above script causes master process’ cpu burst until  
next logrotate time.

top command outputs following:

[code]  
$ top  
last pid: 91548; load averages: 1.00, 1.02, 1.01  
101 processes: 5 running, 78 sleeping, 18 waiting  
CPU: 7.8% user, 0.0% nice, 43.4% system, 0.0% interrupt, 48.8%  
idle  
Mem: 91M Active, 1617M Inact, 181M Wired, 68M Cache, 213M Buf, 19M Free  
Swap: 4096M Total, 4K Used, 4096M Free

PID USERNAME THR PRI NICE SIZE RES STATE  
C TIME WCPU COMMAND  
41661 root 1 113 0 27172K 7716K CPU1  
1 486:03 99.02% nginx  
11 root 1 171 52 0K 16K  
RUN 0 ??? 94.97% idle: cpu0  
10 root 1 171 52 0K 16K  
RUN 1 ??? 1.56% idle: cpu1  
41673 nginx 1 96 0 27480K 8040K select  
0 11:27 0.05% nginx  
12 root 1 -44 -163 0K 16K  
WAIT 0 20.6H 0.00% swi1: net  
22 root 1 -68 0 0K 16K

- 

```
 0 872:49 0.00% em0 taskq

```

24 root 1 -68 -187 0K 16K  
WAIT 0 638:23 0.00% irq16: em0 uhci0+  
13 root 1 -32 -151 0K 16K  
WAIT 0 476:52 0.00% swi4: clock sio  
43 root 1 20 0 0K 16K  
syncer 0 144:55 0.00% syncer  
41 root 1 171 52 0K 16K  
pgzero 0 130:24 0.00% pagezero  
46 root 1 -32 0 0K 16K
- 

```
 0 39:09 0.00% schedcpu

```

3 root 1 -8 0 0K  
16K - 0 35:15 0.00% g\_up  
4 root 1 -8 0 0K  
16K - 0 31:01 0.00% g\_down  
2 root 1 -8 0 0K  
16K - 0 25:47 0.00% g\_event  
6635 root 1 96 0 14024K 2308K select  
0 25:16 0.00% sshd  
640 root 1 96 0 7576K 1692K  
select 0 20:49 0.00% ntpd  
41672 nginx 1 96 0 27484K 8048K select  
0 11:56 0.00% nginx  
41692 nginx 1 96 0 27484K 8044K select  
0 11:55 0.00% nginx  
41666 nginx 1 96 0 27480K 8044K select  
0 11:51 0.00% nginx  
41682 nginx 1 96 0 27480K 8040K select  
0 11:50 0.00% nginx  
41691 nginx 1 96 0 27488K 8048K select  
0 11:50 0.00% nginx  
41663 nginx 1 96 0 27476K 8040K select  
0 11:50 0.00% nginx  
41664 nginx 1 96 0 27476K 8040K select  
0 11:48 0.00% nginx  
41676 nginx 1 96 0 27480K 8040K  
RUN 0 11:46 0.00% nginx  
41686 nginx 1 96 0 27484K 8044K select  
0 11:45 0.00% nginx  
41671 nginx 1 96 0 27476K 8040K select  
0 11:43 0.00% nginx  
41687 nginx 1 96 0 27480K 8040K select  
0 11:43 0.00% nginx  
41662 nginx 1 96 0 27476K 8040K select  
0 11:40 0.00% nginx  
41685 nginx 1 96 0 27480K 8040K select  
0 11:40 0.00% nginx  
41675 nginx 1 96 0 27480K 8040K select  
0 11:37 0.00% nginx  
41681 nginx 1 96 0 27480K 8040K select  
0 11:37 0.00% nginx  
41680 nginx 1 96 0 27476K 8036K select  
0 11:37 0.00% nginx  
41674 nginx 1 96 0 27476K 8036K select  
0 11:36 0.00% nginx  
41690 nginx 1 96 0 27484K 8044K select  
0 11:34 0.00% nginx  
41688 nginx 1 96 0 27480K 8040K select  
0 11:33 0.00% nginx  
41670 nginx 1 96 0 27484K 8048K select  
0 11:33 0.00% nginx  
41689 nginx 1 96 0 27484K 8044K select  
0 11:33 0.00% nginx

[code]

normally top command outputs following:

[code]  
$ top  
last pid: 43789; load averages: 0.00, 0.00, 0.00  
108 processes: 3 running, 87 sleeping, 18 waiting  
CPU: 0.0% user, 0.0% nice, 0.4% system, 0.0% interrupt, 99.6%  
idle  
Mem: 102M Active, 1604M Inact, 181M Wired, 73M Cache, 213M Buf, 16M  
Free  
Swap: 4096M Total, 4K Used, 4096M Free

PID USERNAME THR PRI NICE SIZE RES STATE  
C TIME WCPU COMMAND  
10 root 1 171 52 0K 16K  
CPU1 1 ??? 99.02% idle: cpu1  
11 root 1 171 52 0K 16K  
RUN 0 ??? 97.61% idle: cpu0  
60947 root 1 96 0 27172K 7712K select  
0 24.0H 0.00% nginx  
12 root 1 -44 -163 0K 16K  
WAIT 0 20.8H 0.00% swi1: net  
22 root 1 -68 0 0K 16K

- 

```
 0 884:49 0.00% em0 taskq

```

24 root 1 -68 -187 0K 16K  
WAIT 0 644:02 0.00% irq16: em0 uhci0+  
13 root 1 -32 -151 0K 16K  
WAIT 0 481:46 0.00% swi4: clock sio  
43 root 1 20 0 0K 16K  
syncer 0 144:23 0.00% syncer  
41 root 1 171 52 0K 16K  
pgzero 1 128:31 0.00% pagezero  
46 root 1 -16 0 0K 16K
- 

```
 0 40:48 0.00% schedcpu

```

3 root 1 -8 0 0K  
16K - 0 35:22 0.00% g\_up  
4 root 1 -8 0 0K  
16K - 0 31:20 0.00% g\_down  
2 root 1 -8 0 0K  
16K - 0 26:14 0.00% g\_event  
6652 root 1 96 0 14024K 2332K select  
0 24:07 0.00% sshd  
640 root 1 96 0 7576K 1692K  
select 0 20:52 0.00% ntpd  
60951 nginx 1 96 0 27476K 8032K select  
0 13:17 0.00% nginx  
60968 nginx 1 96 0 27484K 8040K select  
0 13:14 0.00% nginx  
60972 nginx 1 96 0 27488K 8044K select  
0 13:12 0.00% nginx  
60956 nginx 1 96 0 27580K 8140K select  
0 13:10 0.00% nginx  
60954 nginx 1 96 0 27480K 8040K select  
0 13:09 0.00% nginx  
60974 nginx 1 96 0 27484K 8040K select  
0 13:05 0.00% nginx  
60969 nginx 1 96 0 27480K 8036K select  
0 12:59 0.00% nginx  
60978 nginx 1 96 0 27484K 8040K select  
0 12:59 0.00% nginx  
60967 nginx 1 96 0 27480K 8036K select  
0 12:59 0.00% nginx  
60977 nginx 1 96 0 27484K 8040K select  
0 12:59 0.00% nginx  
60949 nginx 1 96 0 27480K 8036K select  
0 12:57 0.00% nginx  
60948 nginx 1 96 0 27476K 8032K select  
0 12:57 0.00% nginx  
60975 nginx 1 96 0 27480K 8036K select  
0 12:57 0.00% nginx  
60953 nginx 1 96 0 27476K 8036K select  
0 12:55 0.00% nginx  
60965 nginx 1 96 0 27484K 8040K select  
0 12:54 0.00% nginx  
60961 nginx 1 96 0 27480K 8036K select  
0 12:54 0.00% nginx  
60958 nginx 1 96 0 27476K 8036K select  
0 12:53 0.00% nginx  
60970 nginx 1 96 0 27480K 8036K select  
0 12:52 0.00% nginx  
60964 nginx 1 96 0 27480K 8036K select  
0 12:52 0.00% nginx  
60966 nginx 1 96 0 27480K 8036K select  
0 12:52 0.00% nginx  
60976 nginx 1 96 0 27484K 8040K select  
0 12:52 0.00% nginx  
60971 nginx 1 96 0 27480K 8036K select  
0 12:50 0.00% nginx

[code]

Am I doing something wrong?

Regards,

Posted at Nginx Forum:

> **[nginx causes cpu burst problem when it is received USR1 signal by logrotate...](https://forum.nginx.org/read.php?2,141795,141795#msg-141795)**
>
> Hi, I'm using nginx/0.7.67 on the freebsd-6.4 $ nginx -V nginx version: nginx/0.7.67 built by gcc 2.95.3 20010315 (release) configure arguments: --prefix=/usr/local --conf-path=/usr/local/conf/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid...

---

<div class="post-metadata">

**Author:** ![hakutoitoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ba9def/32.png) [@hakutoitoi](https://www.ruby-forum.com/u/hakutoitoi)\
**Post date:** [October 18, 2010, 11:06am UTC](https://www.ruby-forum.com/t/nginx-causes-cpu-burst-problem-when-it-is-received-usr1-signal-by-logrotate-script/197648/2 "2010-10-18T11:06:52Z")

</div>

On Mon, Oct 18, 2010 at 03:54:12AM -0400, hakutoitoi wrote:

> –http-client-body-temp-path=/usr/local/var/run/nginx/client\_body\_temp  
> –http-proxy-temp-path=/usr/local/var/run/nginx/proxy\_temp  
> –error-log-path=/usr/local/logs/nginx/error  
> –http-log-path=/usr/local/logs/nginx/access --with-select\_module  
> –with-http\_perl\_module --with-debug --with-http\_stub\_status\_module

> 41673 nginx 1 96 0 27480K 8040K select  
> 0 11:27 0.05% nginx

Why do you use the poor select method ? FreeBSD has very good kqueue  
method.  
This CPU burst may be caused by nginx bug in select method handling.

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![hakutoitoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ba9def/32.png) [@hakutoitoi](https://www.ruby-forum.com/u/hakutoitoi)\
**Post date:** [October 18, 2010, 5:31pm UTC](https://www.ruby-forum.com/t/nginx-causes-cpu-burst-problem-when-it-is-received-usr1-signal-by-logrotate-script/197648/3 "2010-10-18T17:31:35Z")

</div>

Igor,  
Thank you for your advice.

I wanted to use kqueue and have configured using kqueue settings.  
/usr/local/conf/nginx/nginx.conf

```auto
events {
    worker_connections 1024;
    use kqueue;
    multi_accept off;
}
```

error log outputs using kqueue event method.  
/usr/local/logs/nginx/error

```auto
2010/10/18 20:48:32 [notice] 77055#0: using the "kqueue" event method
2010/10/18 20:48:32 [notice] 77055#0: nginx/0.7.67
```

but, I also use Embedded Perl module.

```auto
 ./configure --with-http_perl_module
```

configure with --with-http\_perl\_module

```auto
$ top
69650 nginx 1 4 0 2044K 1540K kqread 0 0:00 0.00% nginx
```

configure without --with-http\_perl\_module

```auto
$ top
77061 nginx 1 96 0 3828K 2124K select 0 0:00 0.00% nginx
```

as long as I use the Embedded Perl module, I can’t fix this problem?

Posted at Nginx Forum:

> **[Re: nginx causes cpu burst problem when it is received USR1 signal by...](https://forum.nginx.org/read.php?2,141795,141922#msg-141922)**
>
> Hi, I'm using nginx/0.7.67 on the freebsd-6.4 $ nginx -V nginx version: nginx/0.7.67 built by gcc 2.95.3 20010315 (release) configure arguments: --prefix=/usr/local --conf-path=/usr/local/conf/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid...

---

<div class="post-metadata">

**Author:** ![hakutoitoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ba9def/32.png) [@hakutoitoi](https://www.ruby-forum.com/u/hakutoitoi)\
**Post date:** [October 18, 2010, 6:15pm UTC](https://www.ruby-forum.com/t/nginx-causes-cpu-burst-problem-when-it-is-received-usr1-signal-by-logrotate-script/197648/4 "2010-10-18T18:15:17Z")

</div>

On Mon, Oct 18, 2010 at 11:29:46AM -0400, hakutoitoi wrote:

> }
> 
> [code]  
> configure without --with-http\_perl\_module
> 
> ```auto
> $ top
> 77061 nginx 1 96 0 3828K 2124K select 0 0:00 0.00% nginx
> ```
> 
> as long as I use the Embedded Perl module, I can’t fix this problem?

Probably, you mixed up:

configure with --with-http\_perl\_module  
kqueue  
configure without --with-http\_perl\_module  
select

It seems that you use perl code that works with remote servers or  
databases  
and this select is called by some perl module.

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![hakutoitoi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ba9def/32.png) [@hakutoitoi](https://www.ruby-forum.com/u/hakutoitoi)\
**Post date:** [October 19, 2010, 4:36am UTC](https://www.ruby-forum.com/t/nginx-causes-cpu-burst-problem-when-it-is-received-usr1-signal-by-logrotate-script/197648/5 "2010-10-19T04:36:02Z")

</div>

sorry I mixed up.

configure with --with-http\_perl\_module  
kqueue  
configure without --with-http\_perl\_module  
select

I tried simple config file(no use perl syntax)

```auto
$ cat /usr/local/conf/nginx/nginx.conf

user nginx users;
error_log logs/nginx/error notice;
worker_rlimit_nofile 8192;
worker_processes 32;

pid /usr/local/var/run/nginx.pid;

events {
    worker_connections 1024;
    use kqueue;
    multi_accept off;
}

#include conf.d/*.conf;
```

configure with --with-http\_perl\_module

```auto
$ top
  PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU
COMMAND
 1551 root 1 4 0 3760K 664K select 1 3:31 0.00%
syslogd
 1605 root 1 8 0 3700K 432K nanslp 1 1:45 0.00% cron
 1600 root 1 4 0 14020K 952K select 1 0:38 0.00% sshd
52642 root 1 4 0 24928K 2996K sbwait 0 0:00 0.00% sshd
 5953 root 1 4 0 3592K 1916K select 1 0:00 0.00% nginx
 5959 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5979 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5966 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5963 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5972 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5975 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5977 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5954 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5958 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5988 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5976 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5986 nginx 1 96 0 3828K 2140K select 0 0:00 0.00% nginx
 5974 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5981 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5955 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5965 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5957 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5962 nginx 1 96 0 3828K 2132K select 1 0:00 0.00% nginx
 5985 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5961 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5973 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5964 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5968 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5967 nginx 1 96 0 3828K 2132K select 0 0:00 0.00% nginx
 5978 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5983 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5987 nginx 1 96 0 3828K 2140K select 0 0:00 0.00% nginx
 5982 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5970 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5980 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5984 nginx 1 96 0 3828K 2136K select 0 0:00 0.00% nginx
 5971 nginx 1 4 0 3828K 2136K select 1 0:00 0.00% nginx
```

configure without --with-http\_perl\_module

```auto
$ top
  PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU
COMMAND
 1551 root 1 96 0 3760K 664K select 0 3:31 0.00%
syslogd
 1605 root 1 8 0 3700K 432K nanslp 0 1:45 0.00% cron
 1600 root 1 4 0 14020K 952K select 1 0:38 0.00% sshd
99672 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
52642 root 1 4 0 24928K 2996K sbwait 0 0:00 0.00% sshd
99701 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99695 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99678 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99694 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99707 nginx 1 4 0 2020K 1508K kqread 0 0:00 0.00% nginx
99674 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99692 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99680 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99700 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99687 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99677 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99675 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99688 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99690 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99676 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99702 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99697 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99681 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99673 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99685 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99682 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99699 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99704 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99689 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99691 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99683 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99706 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99693 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99679 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99698 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
99671 root 1 20 0 1796K 1296K pause 0 0:00 0.00% nginx
99703 nginx 1 4 0 2020K 1512K kqread 0 0:00 0.00% nginx
```

If I built nginx with --with-http\_perl\_module, it seems that nginx uses  
select method instead of kqueue.

Posted at Nginx Forum:

> **[Re: nginx causes cpu burst problem when it is received USR1 signal by...](https://forum.nginx.org/read.php?2,141795,142174)**
>
> Hi, I'm using nginx/0.7.67 on the freebsd-6.4 $ nginx -V nginx version: nginx/0.7.67 built by gcc 2.95.3 20010315 (release) configure arguments: --prefix=/usr/local --conf-path=/usr/local/conf/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid...
