>  기사  >  운영 및 유지보수  >  리눅스의 높은 동시성은 무엇을 의미합니까?

리눅스의 높은 동시성은 무엇을 의미합니까?

青灯夜游
青灯夜游원래의
2022-11-11 15:25:141832검색

Linux에서 높은 동시성은 시스템 운영 중에 발생하는 "짧은 시간에 많은 작업 요청이 발생하는" 상황을 의미합니다. 이는 주로 웹 시스템에서 집중적인 액세스 요청을 많이 받을 때 발생합니다. 이 상황으로 인해 시스템은 이 기간 동안 리소스 요청, 데이터베이스 작업 등과 같은 많은 작업을 수행합니다.

리눅스의 높은 동시성은 무엇을 의미합니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

높은 동시성의 개념

1.1 높은 동시성의 개념

고동성(High Concurrency)은 인터넷 분산 시스템 아키텍처 설계에 있어서 반드시 고려해야 할 요소 중 하나를 의미하는 것이 일반적입니다. 설계를 통한 시스템 보장 동시에 많은 요청을 병렬로 처리할 수 있습니다 .

고동시성(High Concurrency)은 시스템 운영 중 "짧은 시간에 많은 수의 작업 요청이 발생하는" 상황을 말합니다. 주로 웹 시스템이 다수의 중앙 집중식 액세스 요청을 받을 때 발생합니다. 예: 12306 티몰 더블 일레븐 이벤트). 이러한 상황이 발생하면 시스템은 이 기간 동안 리소스 요청, 데이터베이스 작업 등과 같은 많은 작업을 수행하게 됩니다.

1.2 높은 동시성 관련 지표

    응답 시간(Response Time)
    • 시스템이 요청에 응답하는 데 걸리는 시간입니다. 예를 들어 시스템이 HTTP 요청을 처리하는 데 200ms가 걸립니다. 이 200ms는 시스템의 응답 시간입니다
  • 처리량
    • 단위 시간당 처리되는 요청 수
  • Query Per Second QPS(Query Per Second)
    • 초당 응답 요청 수입니다. 인터넷 분야에서는 이 지표와 처리량의 차이가 그리 뚜렷하지 않습니다.
  • 동시 사용자 수(User Concurrence)
    • 시스템 기능을 정상적으로 동시에 사용하고 있는 사용자 수입니다. 예를 들어, 인스턴트 메시징 시스템에서 온라인 동시 사용자 수는 어느 정도 매개변수 측면에서 시스템의 동시 사용자 수를 나타냅니다.
  • IO 이벤트 배포 메커니즘

2. 시스템의 동시성 기능 향상
  • 2.1 수직 확장
  • 단일 시스템 처리 기능 향상
  • 단일 시스템 하드웨어 성능 향상(예: C PU 증가) 코어 수는 32개 코어와 같습니다. 업그레이드 10G와 같은 더 나은 네트워크 카드로 업그레이드, SSD와 같은 더 나은 하드 드라이브로 업그레이드, 2T와 같은 하드 드라이브 용량 확장, 128G

와 같은 시스템 메모리 확장을 통해 단일 머신 아키텍처의 성능을 향상시킵니다. 예를 들어 캐시를 사용하여 IO 시간을 줄이고, 비동기식을 사용하여 단일 서비스 처리량을 늘리고, 잠금 없는 데이터 구조를 사용하여 응답 시간을 줄입니다

2.2 수평적 확장
    • 서버 수를 늘리면 시스템 성능이 선형적으로 확장될 수 있습니다

    • 2.3 일반적인 인터넷 계층 아키텍처
  • (1) 클라이언트 계층: 일반적인 호출자는 브라우저 또는 모바일 애플리케이션 APP

(2) 역방향 프록시 계층: 시스템 입구, 역방향 프록시(3) 사이트 애플리케이션 계층: 구현 핵심 애플리케이션 로직, HTML 또는 json 반환(4) 서비스 계층: 서비스화가 ​​구현되면 이 계층이 있을 것입니다

    (5) 데이터 캐시 계층: 캐시는 저장소에 대한 액세스를 가속화합니다
  • (6 ) 데이터 데이터베이스 계층 : 데이터베이스가 견고한 데이터 스토리지

2.4 수평 확장 아키텍처

역방향 프록시 계층의 수평 확장

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 데이터도 저장

  • 세 개의 단일 Linux 서버가 동시성을 향상

    3.1 iptables 관련

    • 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

    3.2 커널 TCP 매개변수

    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.