본문 바로가기

server12

locust python 으로 로드 테스트가 가능하고 ngrinder 보다 굉장히 심플하고 가볍기도 해서 사용해보았다. 1. 스크립트 작성 class MatchOrderTasks(HttpUser): wait_time = between(1, 2) @task def start(self) : type = self.get_type() id = uuid.uuid4().hex user_id = random.randint(0, 0x7feabb849210) request = self.get_start_request(id, user_id, type) self.client.post('/v1/start', data=json.dumps(request), headers={'Content-Type':'application/json'}) if.. 2021. 4. 20.
org.apache.http.NoHttpResponseException {{host}}:443 failed to respond 👿 org.apache.http.NoHttpResponseException 👿 외부 서버와 연동 후 운영 중에 간헐적으로 정상적인 응답이 떨어지지 않았는데, stacktrace를 살펴보니 재시도 하면 해결될 듯한데 명확하지 않으므로 좀 더 찾아보기로 한다. 타겟 서버에서 유효하지 않은 HTTP 응답으로 제대로 응답하기를 실패했다는 신호라고 하는데 문제는 이거다. 현상의 이유는 HTTP/1.1의 Keep-Alive로 인해 httpclient는 통신이 끝난 connection을 종료하지 않고 동일host:port에 대해 동일한 커넥션을 이용하려 하기 때문이다. 비록 서버측은 통신이 완료되어 해당 연결을 close 할지라도 client 측은 커넥션 객체가 여전히 열려있고 데이터가 인입되길 기다리고 있게된다. .. 2020. 8. 12.
멀티모듈에 한 방으로 적용되는 application.yml 멀티모듈에서 공통된 하나의 application property를 적용했던 과정을 포스팅합니다. 현재 운영하고 있는 애플리케이션은 아래와 같이 멀티 프로젝트로 구성돼있습니다. 모든 모듈은 core 를 의존하고 있기 때문에 core에 특정 도메인(A Domain)의 프로퍼티를 동일하게 가지고 있어야 합니다. 처음엔 모듈이 몇 개 되지 않아 모든 모듈의 프로퍼티에 작성해주었는데요. A Domain 에 추가되는 값들을 모든 모듈에서 관리하기란 쉽지 않았습니다. 다중 프로퍼티를 한 번만 기술하기 위해 두 가지 방법을 찾게 되었습니다. spring.profiles.include 위와 같이 환경에 따라 하나의 파일로 정의해줍니다. 그리고 모듈마다 spring.profiles.include: core 로 명시해주면 .. 2020. 6. 8.
tcpdump mtr Connection timed out (Connection timed out) 이 납니다. 지연이 발생해서 사용했던 네트워크 진단 도구에 대해 간단히 알아봅니다. mtr mtr --tcp --port 443 -r -w -c {{destination}}지연이 발생해도 ping이 빠지는 현상이 일어날 수 있다고 합니다. traceroute + ping을 결합해둔 mtr을 사용합니다. 호스트와 destination 구간에 각 경유하는 호스트마다 손실율을 확인할 수 있어 어떤 네트워크 이슈가 있는지 확인이 가능합니다. ICMP를 사용하기에 UDP 패킷이 차단된 곳까지 추적할 수 있습니다. traceroute vs ping vs mtr에 대해 자세히 포스팅된 블로그도 참고하실 수 있습니다. tcpdump tcpd.. 2020. 5. 15.