SlideShare une entreprise Scribd logo
1  sur  8
Network Flow 
Jooho, Lee 
RHCE,JBCSA 
Red Hat GSS
Machine 
(Kernel) 
CLIENT 
(browser) 
Ring Buffer 
(rx_ring) 
Kernel 
Memory 
Packet 
Data 
Softlrq 
Net_rx_action 
Poll_queue(per CPU) 
NIC1 
NIC Interrupt 
Handler 
alloc_skb() 
Netif_rx_schedule() 
Raised softirq 
DEVICE DRIVER 
Interrupt 
Generator 
DMA Engine 
NIC Memory 
NIC1 
Higher layer 
Check 
Queue 
net.core.netdev_max_backlog
Client 
Client 
SYN 
SYN/ACK 
SYN 
SYN/ACK 
LISTEN Socket 
QUEUE 
Text line 
SYN QUEUE ACCPET QUEUE 
APPLICATION 
(ESTABLISHED 
with PID) 
APPLICATION 
ACK 
ACK 
(S(YENSTRAEBCLIESVHIEEDD ) 
without PID) 
ACCEPT Call 
ACCEPT Call 
LISTEN Socket 
(ESTABLISHED 
without PID) 
(SYN_RECEVIED) 
(ESTABLISHED 
with PID) 
System Wide 
net.ip4.tcp_max_syn_backlog 
Per Socket 
net.core.somaxconn 
Listen(sockfd,backlog) 
/proc/$PID/net/tcp data. 
/proc/$PID/net/tcp data. 
Socket 
Text line Text line 
Socket 
Kernel 
Layer 
Application 
Layer
*SYN Flodding attack(DDOS) 
kernel: possible SYN flooding on port X. Sending cookies. 
When it happen(condition) 
1. sysctl_max_syn_backlog is full 
(=max_qlen_log) ==> net.ipv4.tcp_max_syn_backlog 
2. listen queue is full 
(=Accept queue) ==> net.core.somaxconn (Hard Limit) 
Application can specify it.(Soft Limit) 
3.SYN cookies enabled. 
net.ipv4.tcp_syncookies 
Reference : 
http://blog.dubbelboer.com/2012/04/09/syn-cookies.htm 
l 
https://access.redhat.com/solutions/30453
WAS Engineer가 봐야하는 것 
(Kernel parameter) 
* 전체메모리 공간(bytes) = awk '/MemTotal:/ { printf "%0.f",$2 * 1024}' /proc/meminfo 
net.core.somaxconn :Socket 프로세스 당 접속 대기 queue 
net.ipv4.tcp_max_syn_backlog : Kernel 전체의 접속 대기 queue 
net.ipv4.tcp_syncookies : 1 enable 시 소켓으로 syn backlog queue 가 넘칠때 syncookies 를 보낸 
다. 
net.core.netdev_max_backlog : Interface 당 수신 queue 
net.ipv4.tcp_mem : TCP 전체 버퍼 사이즈 
net.core.rmem_default : 수신 소켓 버퍼로 지정가능한 최대 메모리 크기 
net.core.wmem_default : 송신 소켓 버퍼로 지정가능한 최대 메모리 크기 
net.core.optmem_max : 소켓 당 할당된 최대 버퍼 사이즈를 지정한다. 
net.ipv4.tcp_rmem : 수신 소켓 버퍼의 크기 
net.ipv4.tcp_wmem : 송신 소켓 버퍼의 크기 
net.ipv4.tcp_tw_reuse : TCP TIME_WAIT Socket 재사용 여부. (권장 : 사용) 
net.ipv4.tcp_retries2 : 살아있는 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. 
net.ipv4.tcp_syn_retries : 활성화된 TCP 접속이 재전송을 시도하게 하기 위한 최초 SYN시간의 값을 정한다. 
net.ipv4.tcp_synack_retries : passive TCP 접속 시도가 재 접속을 하기 위한 SYNACKs의 값을 정한 
다. 
net.ipv4.tcp_max_orphans : bind 되지 않은 소켓의 최대 수 (DoS 공격 방어용) 
net.ipv4.tcp_orphan_retries : TCP 연결을 끊기전에 확인하는 횟수 
net.ipv4.tcp_fin_timeout : TCP/IP가 처리 완료된 연결을 해제하여 해당 자원을 재 사용할 수 있다. 
net.ipv4.tcp_keepalive_time : TCP/IP가 대기 연결이 계속 원래 상태를 유지하는지 확인을 시도하는 빈도를 제어 
net.ipv4.tcp_keepalive_intvl : 상대로부터 활성화 상태 지속 응답이 수신되지 않을 경우 
TCP/IP에서 활성화 상태 지속 전송을 반복하는 빈도를 결정. 
net.ipv4.tcp_fin_timeout : FIN_TIMEOUT 대기 시간을 줄이면 끊어진 소켓의 소거 시간을 줄일 수 있음. 
net.ipv4.icmp_echo_ignore_all : ICMP 차단
WAS Engineer가 봐야하는 것 
(Ulimit parameter) 
fs.aio-max-nr : 최대 AIO (asynchronous io) request의 수 (파일 수와는 무관) 
fs.file-max : 시스템 전체에서 최대로 열 수 있는 파일개수 
fs.nr_open : 하나의 프로세스가 핸들링하는 최대 파일개수 
# ulimit -n : 일반 계정(root 제외)의 프로세스(세션)별 최대 오픈할 수 있는 파일 수 
최대값 : fs.nr_open ( fs.nr_open보다 작거나 같아야 함) 
# ulimit -u : nproc 값은 각 유저별로 생성할 수 있는 최대 프로세스의 갯수 
* 각 파라메터의 연관관계 
fs.file-max >= fs.nr_open >= ulimit -n
WAS Engineer가 봐야하는 것 
명령어 
(Commands) 
* 프로세스 파일 오픈 수 확인 
실행중인 모든 프로세스에서 사용하고 있는 파일의 수를 확인 
# lsof | wc -l 
PID 25102 프로세스의 파일 수 확인 
# lsof -p 25102 | wc -l 
해당 프로세스가 실제 사용하고 있는 파일 핸들러의 수 
# ls /proc/25102/fd | wc -l 
*현재 열려있는 프로세스의 수 확인 
ps -eLf |grep PID |wc -l 
pstree

Contenu connexe

Tendances

[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis ClusterNAVER D2
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은jieun kim
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AITommy Lee
 
[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기NAVER D2
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기NAVER D2
 
150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kimjieun kim
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinuxOpen Source Consulting
 
Grafana Review
Grafana ReviewGrafana Review
Grafana ReviewSangmo Goo
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기NAVER D2
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화NAVER D2
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurationsJohn Kim
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술NAVER D2
 
Community openstack & Ceph 기반 서비스 운영 해결 방안
Community openstack & Ceph 기반 서비스 운영 해결 방안Community openstack & Ceph 기반 서비스 운영 해결 방안
Community openstack & Ceph 기반 서비스 운영 해결 방안Open Source Consulting
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitorjieun kim
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migrationymtech
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 

Tendances (20)

[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
 
네트워크 기본
네트워크 기본네트워크 기본
네트워크 기본
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
 
[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기[142]편광을 활용한6 dof 전현기
[142]편광을 활용한6 dof 전현기
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기
 
150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
 
Grafana Review
Grafana ReviewGrafana Review
Grafana Review
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
 
Community openstack & Ceph 기반 서비스 운영 해결 방안
Community openstack & Ceph 기반 서비스 운영 해결 방안Community openstack & Ceph 기반 서비스 운영 해결 방안
Community openstack & Ceph 기반 서비스 운영 해결 방안
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 

En vedette

Consistent hashing
Consistent hashingConsistent hashing
Consistent hashingJooho Lee
 
그래프의 최단 경로 찾기
그래프의 최단 경로 찾기그래프의 최단 경로 찾기
그래프의 최단 경로 찾기Jung-Ho Kim
 
Ford Fulkerson Algorithm
Ford Fulkerson AlgorithmFord Fulkerson Algorithm
Ford Fulkerson AlgorithmAdarsh Rotte
 
4. dynamic programming(1)
4. dynamic programming(1)4. dynamic programming(1)
4. dynamic programming(1)Hongjun Jang
 
Baekjoon Online Judge 1492번 풀이
Baekjoon Online Judge 1492번 풀이Baekjoon Online Judge 1492번 풀이
Baekjoon Online Judge 1492번 풀이Hongjun Jang
 
Coder’s High 2014 풀이
Coder’s High 2014 풀이Coder’s High 2014 풀이
Coder’s High 2014 풀이Baekjoon Choi
 
2014 ACM-ICPC Daejeon 인터넷 예선 해설
2014 ACM-ICPC Daejeon 인터넷 예선 해설2014 ACM-ICPC Daejeon 인터넷 예선 해설
2014 ACM-ICPC Daejeon 인터넷 예선 해설Baekjoon Choi
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기Jongwook Choi
 
Routing algorithm network layer
Routing algorithm  network layerRouting algorithm  network layer
Routing algorithm network layersambhenilesh
 
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기Baekjoon Choi
 

En vedette (12)

Consistent hashing
Consistent hashingConsistent hashing
Consistent hashing
 
그래프의 최단 경로 찾기
그래프의 최단 경로 찾기그래프의 최단 경로 찾기
그래프의 최단 경로 찾기
 
Ford Fulkerson Algorithm
Ford Fulkerson AlgorithmFord Fulkerson Algorithm
Ford Fulkerson Algorithm
 
4. dynamic programming(1)
4. dynamic programming(1)4. dynamic programming(1)
4. dynamic programming(1)
 
Baekjoon Online Judge 1492번 풀이
Baekjoon Online Judge 1492번 풀이Baekjoon Online Judge 1492번 풀이
Baekjoon Online Judge 1492번 풀이
 
Network flow problems
Network flow problemsNetwork flow problems
Network flow problems
 
Coder’s High 2014 풀이
Coder’s High 2014 풀이Coder’s High 2014 풀이
Coder’s High 2014 풀이
 
2014 ACM-ICPC Daejeon 인터넷 예선 해설
2014 ACM-ICPC Daejeon 인터넷 예선 해설2014 ACM-ICPC Daejeon 인터넷 예선 해설
2014 ACM-ICPC Daejeon 인터넷 예선 해설
 
Network flow
Network flowNetwork flow
Network flow
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
Routing algorithm network layer
Routing algorithm  network layerRouting algorithm  network layer
Routing algorithm network layer
 
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
 

Similaire à Tcp summary

OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfHo Jeong Im
 
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드Opennaru, inc.
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장Sunggon Song
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdfSeokju Hong
 
Apache httpd ( 아파치 웹서버 ) 설치 가이드
Apache httpd ( 아파치 웹서버 ) 설치 가이드Apache httpd ( 아파치 웹서버 ) 설치 가이드
Apache httpd ( 아파치 웹서버 ) 설치 가이드Opennaru, inc.
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driverjumiss
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초Yu Yongwoo
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part Isprdd
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기흥배 최
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)wonyong hwang
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들NHN FORWARD
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
세션1. block chain as a platform
세션1. block chain as a platform세션1. block chain as a platform
세션1. block chain as a platformJay JH Park
 
Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서기한 김
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTOiFunFactory Inc.
 

Similaire à Tcp summary (20)

OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
 
Apache httpd ( 아파치 웹서버 ) 설치 가이드
Apache httpd ( 아파치 웹서버 ) 설치 가이드Apache httpd ( 아파치 웹서버 ) 설치 가이드
Apache httpd ( 아파치 웹서버 ) 설치 가이드
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driver
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
Nodejs_chapter3
Nodejs_chapter3Nodejs_chapter3
Nodejs_chapter3
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
세션1. block chain as a platform
세션1. block chain as a platform세션1. block chain as a platform
세션1. block chain as a platform
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
 

Plus de Jooho Lee

Quay 3.3 installation
Quay 3.3 installationQuay 3.3 installation
Quay 3.3 installationJooho Lee
 
OpenShift4 Installation by UPI on kvm
OpenShift4 Installation by UPI on kvmOpenShift4 Installation by UPI on kvm
OpenShift4 Installation by UPI on kvmJooho Lee
 
Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.Jooho Lee
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)Jooho Lee
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)Jooho Lee
 
Practical byteman sample 20131128
Practical byteman sample 20131128Practical byteman sample 20131128
Practical byteman sample 20131128Jooho Lee
 

Plus de Jooho Lee (7)

Quay 3.3 installation
Quay 3.3 installationQuay 3.3 installation
Quay 3.3 installation
 
OpenShift4 Installation by UPI on kvm
OpenShift4 Installation by UPI on kvmOpenShift4 Installation by UPI on kvm
OpenShift4 Installation by UPI on kvm
 
Hello istio
Hello istioHello istio
Hello istio
 
Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)
 
Practical byteman sample 20131128
Practical byteman sample 20131128Practical byteman sample 20131128
Practical byteman sample 20131128
 

Tcp summary

  • 1. Network Flow Jooho, Lee RHCE,JBCSA Red Hat GSS
  • 2. Machine (Kernel) CLIENT (browser) Ring Buffer (rx_ring) Kernel Memory Packet Data Softlrq Net_rx_action Poll_queue(per CPU) NIC1 NIC Interrupt Handler alloc_skb() Netif_rx_schedule() Raised softirq DEVICE DRIVER Interrupt Generator DMA Engine NIC Memory NIC1 Higher layer Check Queue net.core.netdev_max_backlog
  • 3. Client Client SYN SYN/ACK SYN SYN/ACK LISTEN Socket QUEUE Text line SYN QUEUE ACCPET QUEUE APPLICATION (ESTABLISHED with PID) APPLICATION ACK ACK (S(YENSTRAEBCLIESVHIEEDD ) without PID) ACCEPT Call ACCEPT Call LISTEN Socket (ESTABLISHED without PID) (SYN_RECEVIED) (ESTABLISHED with PID) System Wide net.ip4.tcp_max_syn_backlog Per Socket net.core.somaxconn Listen(sockfd,backlog) /proc/$PID/net/tcp data. /proc/$PID/net/tcp data. Socket Text line Text line Socket Kernel Layer Application Layer
  • 4.
  • 5. *SYN Flodding attack(DDOS) kernel: possible SYN flooding on port X. Sending cookies. When it happen(condition) 1. sysctl_max_syn_backlog is full (=max_qlen_log) ==> net.ipv4.tcp_max_syn_backlog 2. listen queue is full (=Accept queue) ==> net.core.somaxconn (Hard Limit) Application can specify it.(Soft Limit) 3.SYN cookies enabled. net.ipv4.tcp_syncookies Reference : http://blog.dubbelboer.com/2012/04/09/syn-cookies.htm l https://access.redhat.com/solutions/30453
  • 6. WAS Engineer가 봐야하는 것 (Kernel parameter) * 전체메모리 공간(bytes) = awk '/MemTotal:/ { printf "%0.f",$2 * 1024}' /proc/meminfo net.core.somaxconn :Socket 프로세스 당 접속 대기 queue net.ipv4.tcp_max_syn_backlog : Kernel 전체의 접속 대기 queue net.ipv4.tcp_syncookies : 1 enable 시 소켓으로 syn backlog queue 가 넘칠때 syncookies 를 보낸 다. net.core.netdev_max_backlog : Interface 당 수신 queue net.ipv4.tcp_mem : TCP 전체 버퍼 사이즈 net.core.rmem_default : 수신 소켓 버퍼로 지정가능한 최대 메모리 크기 net.core.wmem_default : 송신 소켓 버퍼로 지정가능한 최대 메모리 크기 net.core.optmem_max : 소켓 당 할당된 최대 버퍼 사이즈를 지정한다. net.ipv4.tcp_rmem : 수신 소켓 버퍼의 크기 net.ipv4.tcp_wmem : 송신 소켓 버퍼의 크기 net.ipv4.tcp_tw_reuse : TCP TIME_WAIT Socket 재사용 여부. (권장 : 사용) net.ipv4.tcp_retries2 : 살아있는 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. net.ipv4.tcp_syn_retries : 활성화된 TCP 접속이 재전송을 시도하게 하기 위한 최초 SYN시간의 값을 정한다. net.ipv4.tcp_synack_retries : passive TCP 접속 시도가 재 접속을 하기 위한 SYNACKs의 값을 정한 다. net.ipv4.tcp_max_orphans : bind 되지 않은 소켓의 최대 수 (DoS 공격 방어용) net.ipv4.tcp_orphan_retries : TCP 연결을 끊기전에 확인하는 횟수 net.ipv4.tcp_fin_timeout : TCP/IP가 처리 완료된 연결을 해제하여 해당 자원을 재 사용할 수 있다. net.ipv4.tcp_keepalive_time : TCP/IP가 대기 연결이 계속 원래 상태를 유지하는지 확인을 시도하는 빈도를 제어 net.ipv4.tcp_keepalive_intvl : 상대로부터 활성화 상태 지속 응답이 수신되지 않을 경우 TCP/IP에서 활성화 상태 지속 전송을 반복하는 빈도를 결정. net.ipv4.tcp_fin_timeout : FIN_TIMEOUT 대기 시간을 줄이면 끊어진 소켓의 소거 시간을 줄일 수 있음. net.ipv4.icmp_echo_ignore_all : ICMP 차단
  • 7. WAS Engineer가 봐야하는 것 (Ulimit parameter) fs.aio-max-nr : 최대 AIO (asynchronous io) request의 수 (파일 수와는 무관) fs.file-max : 시스템 전체에서 최대로 열 수 있는 파일개수 fs.nr_open : 하나의 프로세스가 핸들링하는 최대 파일개수 # ulimit -n : 일반 계정(root 제외)의 프로세스(세션)별 최대 오픈할 수 있는 파일 수 최대값 : fs.nr_open ( fs.nr_open보다 작거나 같아야 함) # ulimit -u : nproc 값은 각 유저별로 생성할 수 있는 최대 프로세스의 갯수 * 각 파라메터의 연관관계 fs.file-max >= fs.nr_open >= ulimit -n
  • 8. WAS Engineer가 봐야하는 것 명령어 (Commands) * 프로세스 파일 오픈 수 확인 실행중인 모든 프로세스에서 사용하고 있는 파일의 수를 확인 # lsof | wc -l PID 25102 프로세스의 파일 수 확인 # lsof -p 25102 | wc -l 해당 프로세스가 실제 사용하고 있는 파일 핸들러의 수 # ls /proc/25102/fd | wc -l *현재 열려있는 프로세스의 수 확인 ps -eLf |grep PID |wc -l pstree