26P by yunyun0505 2022-09-15 | favorite | 댓글 5개

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% 적게 사용함
  • 추후 오픈소스로 공개 예정

cpu 70% 메모리 67%가 놀랍네요..

크 nginx 도 참 잘썼는데 요거 오픈소스로 나오면 바로 써보고 싶네요

러스트를 공부해도 취업할 곳이 읎네요

Rust라니 마음에 드는군여

시스템 프로그래밍에서 만큼은 러스트가 점점 독보적이 되어가고 있네요..