본문 바로가기

computer science

(11)
File Descriptor 제한 테스트(feat. ulimit, JMeter, VisualVM) 이전 글 테스팅 툴 - JMeter와 모니터링 툴 - VisualVM에서 어플리케이션을 테스트하고 어플리케이션이 사용하고 있는 자원을 모니터링하였다. JMeter 문서에 나오는 best practices에서 정확한 테스트를 위해 thread 수를 적절히 설정해야 할 필요가 있다고 나와 있었는데, 당시에는 그러면 얼마만큼의 thread 수가 적절한가? 하는 의문이 들었다. File Descriptor, ulimit을 공부하며 어떤 영향이 있는지 알 수 있는 테스트를 할 수 있었다. 이번 글은 그 테스트에 대한 글이다. Spring Boot Application Server SlowController를 하나 만들어 각 루트 요청이 Thread를 5초간 sleep 하도록 만들었다. @RestController..
File Descriptor란? "하나의 서버 컴퓨터가 요청을 몇 개나 맺을 수 있을까요?" 답변을 하지 못했다. 아마 성능이 매우 좋은 cpu, ram, disk를 쓰면 요청을 많이 맺을 수 있지 않을까 생각했다. 물론 하드웨어적인 요소들이 서버가 맺을 수 있는 요청의 수에 영향을 주겠지만, Unix-like OS 관점에서 볼 때 모든 요청이 파일로 관리되기 때문에 '파일을 얼마나 생성해낼 수 있는가?'가 하나의 지표로 활용될 수 있을 것이다. 여기서 요청이라 하면 sockets, network I/O, disk I/O 등 다양한 인터페이스를 가리킨다. 소켓을 열거나 네트워크 연결을 수립할 때, 파일을 열거나 디스크 장치에 접근할 때도 file descriptor가 생성된다. 현재 사용하고 있는 노트북이 macOS이므로 file de..
Timeout이란? - Connection Timeout / Read Timeout 타임아웃이란? timeout은 특정 이벤트를 완료하는 데 할당된 제한 시간입니다. 이 제한 시간 안에 특정 이벤트가 완료되지 않으면 보통 'timed out' 되었다고 말합니다. 즉, timeout은 '제한시간' 그 자체를 나타내고, timed out은 제한 시간 내에 완료되지 못한 상태에 가깝습니다. 따라서 개발을 할 때 보통 timeout을 세팅하고, 그 시간 내에 처리되지 못하면(timed out) 어떤 조치를 취할 것인가를 구현하는 것이 일반적입니다. 이 때, 위에서 말한 특정 이벤트란 다음과 같이 network layer, application layer 두가지 계층으로 나누어 볼 수 있습니다. Network layer 서버 간 TCP/IP 통신은 먼저 connection을 수립하고 이루어집니다..