로드밸런서 역할을 할 리버스프록시 서버 nginx 가 들어있는 docker container 를 실행했다.
처음에는 리버스프록시 뒷단에 ec2 두대로 k6 확인을 했었는데 대략 800? VUs 까지 버티는 것으로 보였다.
아니.. 그러면 단순히 ec2 를 세대, 네대, 다섯대 늘리면 과부하(stress) 테스트를 했을 때 버틸 수 있는 VUs 수가 그 만큼 선형으로 증가하는가??
해서 ec2 를 5대까지 늘려보았다.
근데 계속 1000 VUs 근처에서 too many open files 에러가 나면서 request fail 이 뜬다.
나중에 보니 정확히는 1024 VUs 였는데,
ulimit -a
ulimit -aH // 하드
ulimit -aS // 소프트
유저 리밋에서 파일 오픈 가능 개수가 1024로 걸려있었던 탓이다.
ulimit -n 4096
위 명령어로 개수를 늘려준다.
다시 k6 부하테스트를 진행해보니 5대로 3000VUs 까지 무난한 것으로 보인다.
(1차 확인 후 주말 지나서 다시 서버 개수별 최대 VUs 확인하려니 교육 받을 때 쓰던 aws iam 계정 접속이 안되어 확인을 못했다. 이건 아쉽지만 나중에..)
------------------
연결을 끊었다가 다시 접속하면 초기화 되어있다.
sudo vi /etc/security/limits.conf
위 config 파일을 수정해야 한다.
변경 하고, 재접속하면 적용되어있다.
추가로,
ulimit 과 hard, soft 내용은 아래를 참고함.
https://faq.hostway.co.kr/Linux_ETC/7179
User limit 이란?
ulimit는 프로세스의 자원 한도를 설정하는 명령으로, soft한도와 hard한도 두가지
soft : 새로운 프로그램을 생성하면 기본으로 적용되는 한도
hard : 소프트한도에서 최대로 늘릴 수 있는 한도
apache 와 같이 웹 서비스를 운영 시 동접자가 많은 경우 구동되는apache 프로세스 수와 해당 프로세스가 처리하게되는 파일 수 또한 증가함
이에 따라 시스템 적으로도 해당 요청에 대응 할 수 있도록 상향 설정이 필요함
'Programming' 카테고리의 다른 글
클라우드란? 클라우드 서비스를 사용하는 이유는? (0) | 2021.07.30 |
---|---|
Spring MVC 프레임워크 구조 Framework 구성요소 (0) | 2021.07.20 |
Docker container stop 시에 permission denied 에러 (0) | 2021.07.13 |
JPA 관련 에러 error, Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement " ~ "; expected "identifier"; SQL statement: (0) | 2021.07.05 |
Anaconda environment copy, 아나콘다 환경 복사 생성 (0) | 2021.06.21 |