[문제해결] redis 시작시 에러 2015-07-07

1. 문제상황

> Linux-CentOS환경에서 Redis 서버가 시작되지 않았다.


2. 문제확인

> 로그파일(/var/log/redis/redis.log)을 확인하여 보니 다음과 같았다. 개발환경을 구축하기 위해 낮은사양의 서버에 여러 포트를 올려서 사용하였더니 기본 시스템 자원의 제한 값을 초과 한것이다.

[1016] 06 Jul 22:56:45.118 # You requested maxclients of 10032 requiring at least 10064 max file descriptors.
[1016] 06 Jul 22:56:45.123 # Redis can't set maximum open files to 10064 because of OS error: Operation not permitted.
[1016] 06 Jul 22:56:45.123 # Current maximum open files is 1024. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclie                                                  nts increase 'ulimit -n'.
* Current maximum open files is 1024. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclie                                                  nts increase 'ulimit -n'.
==> 현재 최대 열수있는 파일수는 1024이고 높게 조정하려면 ulimit -n 명령을 사용하라고 친절히 설명해 주고 있다.

3. 문제해결

> ‘ulimit’ 명령으로 시스템 자원의 제한 값을 확인하고 변경할 수 있다.

제한 값 확인
[root@redis]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14806
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14806
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
제한 값 변경
ulimit -n 32768
실행 로그 확인
cd                 _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.8.13 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6201
 |    `-._   `._    /     _.-'    |     PID: 29333
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[29333] 07 Jul 13:18:18.240 # Server started, Redis version 2.8.13
[29333] 07 Jul 13:18:18.258 * DB loaded from disk: 0.017 seconds
[29333] 07 Jul 13:18:18.258 * The server is now ready to accept connections on p
* '-c' : core file의 최대크기
* '-d' : 프로세스 data segment의 최대크기
* '-p' : pipe 버퍼의 크기
* '-s' : stack의 최대크기
* '-n' : open 가능한 파일의 개수
* '-f' : 쉘에서 생성하는 파일의 최대크기
* '-t' : 할당받을 수 있는 cpu time
* '-v' : 프로세스가 할당 받을 수 있는 가상메모리의 크기
* '-t' : 할당받을 수 있는 cpu time
* '-a' : 모든 제한값 출력

[nGrinder] 2-3. Monitor 설치 2015-05-07

Agent 설치와 동일하게 [2-1. Controller]에서 설치한 컨트롤러 서버로 부터 설치 파일을 다운로드 받아 압축을 풀고 실행한다. 별다른 설정은 필요없다.

 

 1. 다운로드 및 압축해제
cd /usr/local/src
wget http://{Controller Host}/monitor/download
mv download monitor.tar.gz
tar xvf monitor.tar.gz
ngrinder-monitor 폴더가 생성된다.

 

 2. 생성된 폴더를 적당한 위치에 옮기고 monitor를 실행
mv ngrinder-monitor ../
cd /usr/local/ngrinder-monitor
./run_monitor.sh or ./run_monitor_bg.sh
백그라운드로 실행(run_monitor_bg.sh)하지 않고 로그를 실시간으로 확인하기 위해서는 run_monitor.sh를 실행한다.