cloudflare가 nginx를 걷어내고 Rust로 HTTP Proxy(Pingora)를 만들어서 사용

nginx는 한계가 있었음

  • 매 요청에 대해 단일 worker만 사용하므로 cpu core 사용 불균형이 존재함
  • worker당 connection pool이 존재하기 때문에 TCP 및 TLS 커넥션 연결 재활용율이 나쁨 -> TTFB가 높아짐
  • 또한 nginx를 운영하는데 필요한 기능들을 자체 구현하고 있었는데 C로 설계된 nginx는 memory-safe하지 않아서 숙련된 엔지니어도 실수를 하곤 했음

Pingora

  • Cloudflare는 비 RFC 규격의 요청도 많이 받고 있는데 타사 라이브러리(hyper)는 RFC에 엄격한 상태로 구현되어있어서 확장하려면 추가 공수가 들어가기에 자체 구축
  • Rust는 성능 저하 없이 memory safe한 방식으로 C가 할 수 있는 일을 대체 가능해서 선택
  • 연결 풀을 쉽게 공유하기 위해 work-stealing 방식의 스케줄링 시스템을 도입했고, 재사용률이 증가함. 이전에 비해서 초당 1/3 수준의 커넥션을 맺음
  • 이전에 비해서 CPU는 70%, 메 모리는 67% 적게 사용함
  • 추후 오픈소스로 공개 예정

출처 URL : https://news.hada.io/topic?id=7400

이 게시글이 문제가 될 시, 삭제하겠습니다.

댓글 없음:

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.

Powered by Blogger.