Linux에서 높은 동시성은 시스템 운영 중에 발생하는 "짧은 시간에 많은 작업 요청이 발생하는" 상황을 의미합니다. 이는 주로 웹 시스템에서 집중적인 액세스 요청을 많이 받을 때 발생합니다. 이 상황으로 인해 시스템은 이 기간 동안 리소스 요청, 데이터베이스 작업 등과 같은 많은 작업을 수행합니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
고동성(High Concurrency)은 인터넷 분산 시스템 아키텍처 설계에 있어서 반드시 고려해야 할 요소 중 하나를 의미하는 것이 일반적입니다. 설계를 통한 시스템 보장 동시에 많은 요청을 병렬로 처리할 수 있습니다 .
고동시성(High Concurrency)은 시스템 운영 중 "짧은 시간에 많은 수의 작업 요청이 발생하는" 상황을 말합니다. 주로 웹 시스템이 다수의 중앙 집중식 액세스 요청을 받을 때 발생합니다. 예: 12306 티몰 더블 일레븐 이벤트). 이러한 상황이 발생하면 시스템은 이 기간 동안 리소스 요청, 데이터베이스 작업 등과 같은 많은 작업을 수행하게 됩니다.단일 시스템 하드웨어 성능 향상(예: C PU 증가) 코어 수는 32개 코어와 같습니다. 업그레이드 10G와 같은 더 나은 네트워크 카드로 업그레이드, SSD와 같은 더 나은 하드 드라이브로 업그레이드, 2T와 같은 하드 드라이브 용량 확장, 128G
역방향 프록시 계층의 수평 확장
nginx에 병목 현상이 발생하면 서버 수를 늘리고 nginx를 추가하면 됩니다. 서비스 배포를 위해 추가 외부 네트워크 IP는 역방향 프록시 계층의 성능을 확장하고 이론적으로 무한한 높은 동시성을 달성할 수 있습니다. 이는 "DNS 폴링"을 통해 달성됩니다. DNS 서버는 액세스를 위해 DNS 확인 요청이 이루어질 때마다 도메인 이름에 대해 여러 구성을 구성합니다. DNS 서버에서 이러한 IP는 폴링되고 반환됩니다. 사이트 계층의 수평 확장은 "nginx"를 통해 이루어집니다. nginx.conf를 수정하면 여러 웹 백엔드를 설정할 수 있습니다
웹 백엔드에 병목 현상이 발생하면 서버 수를 늘리고 새 웹 서비스 배포를 추가하고 nginx 구성에서 새 웹 백엔드를 구성하면 됩니다. 사이트 계층의 성능을 확장하고 이론적으로 무한한 높은 동시성을 달성할 수 있습니다. 서비스 계층의 수평적 확장은 "서비스 연결 풀"을 통해 달성됩니다. 다운스트림 서비스 계층 RPC-서버가 사용되면 RPC-클라이언트의 연결 풀이 달성됩니다. 서비스에 병목 현상이 발생하면 서버 수를 늘리고 새 서비스 배포를 추가하고 RPC 클라이언트에서 새 서비스를 설정하면 서비스 계층의 성능을 확장할 수 있습니다. 이론적으로 무한한 높은 동시성 데이터 계층(캐시, 데이터베이스)의 수평적 확장은 데이터의 수평적 확장을 포함하며, 원래 스토리지는 시스템 확장을 위해 하나의 서버에 있는 데이터(캐시, 데이터베이스)를 수평적으로 분할합니다. 성능.
특정 범위의 데이터 저장
user0 라이브러리, store uid 범위 1-1kw
user1 라이브러리, store uid 범위 1kw-2kw
해시 레벨에 따라 분할
user0 라이브러리는 uid 데이터도 저장
user1 라이브러리는 이상한 uid 데이터도 저장
iptables 방화벽 닫기 , 커널이 iptables 모듈을 로드하는 것을 방지
단일 프로세스에서 최대 열린 파일 수를 제한합니다(단일 프로세스에서 열리는 최대 파일 수는 기본적으로 1024입니다)
ulimit –n 65535
소프트 및 하드 수정 사용자를 위한 열린 파일 수에 대한 Linux 시스템의 제한
vim /etc/security/limits.conf * soft nofile 65535 #'*'表示修改所有用户的限制 * hard nofile 65535
#用户完成系统登录后读取/etc/security/limits.conf文件 vim /etc/pam.d/login sessionrequired /lib/security/pam_limits.so
TIME_WAIT 상태
TCP 연결이 끊어진 후에도 잠시 동안 TIME_WAIT 상태로 유지됩니다. 포트가 해제되기 전 일정 기간. 동시 요청이 너무 많으면 TIME_WAIT 상태의 연결이 많이 생성됩니다. 시간 내에 연결을 끊지 못하면 많은 양의 포트 리소스와 서버 리소스가 사용됩니다
#查看TIME_WAIT状态连接 netstat -n | grep tcp | grep TIME_WAIT |wc -l
# vim /etc/sysctl.conf net.ipv4.tcp_syncookies= 1 #表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_tw_reuse= 1 #表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle= 1 #表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭; net.ipv4.tcp_fin_timeout= 30 #修改系統默认的TIMEOUT 时间。
관련 권장 사항: " Linux 비디오 튜토리얼"
위 내용은 리눅스의 높은 동시성은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!