개발 노트 (58) 썸네일형 리스트형 [Golang] http.Client reuse connection 증상 Go 로 만든 서비스 운영 중 특정 서버에 HTTP Request 를 요청하는 Http Client 서비스를 구현하던 중 Client 객체를 매번 생성하는 방식으로 구현했더니 커널단에서 TIME_WAIT 인 socket이 쌓여 자원 고갈이 되는 증상이 발생 문제점 HTTP Client Request 시 마다 Client 객체를 생성하거나 Client pool 방식을 사용하지 않는 경우 매번 Client 소켓을 생성하고 TCP 생명 주기에 따라 Client 소켓 종료시 TIME_WAIT 상태에서 기다리게 되며 자원이 고갈된다. 조치 검색 결과 Go 의 HTTP Client 는 자체적으로 Client pool 을 제공하기 때문에 다음과 같이 적용하면 최대 connection pool 을 설정할 수 있다.. [패킷덤프] 윈도우 tcpdump (dumpcap) 사용하기 윈도우에서 Linux 의 tcpdump 처럼 명령어 기반으로 패킷 필터를 걸어 패킷 덤프 파일을 저장하고 싶을 때가 있다. 물론 Wireshark 를 사용해 패킷을 모니터링하며 저장할 수 있지만 Wireshark 는 기본적으로 UI 를 띄워야만 사용이 가능하기 때문에 패킷을 실시간 모니터링하지 않아도 되는 경우는 굳이 창을 띄워 메모리를 더 잡아먹지 않아도 된다. Wireshark 설치 시 함께 설치되는 exe 파일들 중 dumpcap.exe 프로그램을 사용하면 tcpdump 와 유사한 캡처 필터 지정, output 파일 지정 등을 지정하여 실시간 모니터링하지 않으면서 패킷 덤프가 가능하다. 아래는 그 상세 방법이다. 1. Wireshark 설치 기본적으로 패킷을 뜨려는 상태라면 Wireshark 는 설.. [Kernel] 리눅스 서버의 TCP 네트워크 성능을 결정짓는 커널 파라미터 업무 중 리눅스 커널 옵션으로 TCP 네트워크 성능을 올릴 수 있다는 좋은 블로그를 봐서 링크를 기록한다. https://meetup.toast.com/posts/55 [GDB] 자식 프로세스 디버깅 Linux 개발 환경에서 gdb 로 서비스 디버깅 시 자식 프로세스를 디버깅하는 방법 ]# gdb ./service (gdb) set follow-fork-mode child (gdb) r -start ... gdb 수행 전 "set follow-fork-mode child" 설정 후 run 이후 gdb 는 서비스의 자식 프로세스를 따라감 [VMWare] VMWare for Linux 강제 종료 방법 증상 VMWare 가 "vmware ${VMWare_Name} cannot be closed while the virtual machine is busy" 문구와 함께 꺼지지 않는 경우 원인 동작 중인 VMWare Host 중 오류로 인해 해당 Host 컨트롤이 되지 않음. 이 경우 VMWare 서비스 전체 재시작이 필요 함 조치 1. 오류 문구에 뜬 VMWare_Name 디렉터리로 이동한다. cd ${VMWare_Name_Path} rm -rf ./*.lck ps -ef | grep vmware-vmx 2. ".lck" 디렉터리를 삭제한다 rm -rf ./*.lck3. vmware-vmx 프로세스를 모두 종료한다 ps -ef | grep vmware-vmx # check vmware-vmx proces.. [Socket] Get socket information by socket descriptor : getsockname() How to get the TCP Client Port number by Socket Descripter? ► getsockname() function (man_page) return the socket information on second parameter by socket descripter in frisrt parameter 1. Write test.cpp #include #include #include #include #include #include int main() { char strIP[16] = {0,}; unsigned short usPort = 0;; struct sockaddr_in server_addr, my_addr; int sockfd = -1; // default Error .. [Linux] CentOS 7 GUI 에 Wireshark 설치하기 yum 으로 wireshark 설치 ]# yum -y install wireshark ]# yum -y install wireshark-gnome Wireshark Gnome 실행 인터넷 > Wireshark Network Analyzer 클릭 인터페이스 불러오지못할 경우 ► /sbin/dumpcap 파일에 권한 부여 ]# chmod +s /sbin/dumpcap ]# chmod +x /sbin/dumpcap 명령어 입력 후 정상 동작 확인 [Linux] VMware Virtual Machine list export / import How to export / import VMWare virtual machine list on Linux ? /home/username/.vmware/inventory.vmls file is the list of virtual machine use that file to export and import 이전 1 2 3 4 5 6 7 8 다음