찾다
웹 프론트엔드JS 튜토리얼Node.js_node.js의 비동기 IO 성능에 대한 토론

대부분의 웹 애플리케이션의 병목 현상은 IO, 즉 디스크 읽기 및 쓰기, 네트워크 읽기 및 쓰기, 데이터베이스 읽기 및 쓰기입니다. 이 기간을 기다리기 위해 어떤 전략을 사용할 것인지가 성능 향상의 핵심이 됩니다.

PHP의 전략: 여러 프로세스를 실행하고 IO가 완료될 때까지 직접 기다립니다. 단점: 여러 프로세스가 여러 메모리 복사본을 사용하므로 프로세스 간에 데이터를 공유하기가 어렵습니다.

일반적인 C/C 전략: 여러 스레드에서 실행되고 프로그램은 자체적으로 잠금 상태를 유지합니다. 단점: 개발 비용이 높고 오류가 발생하기 쉬우며 디버깅이 어렵습니다.
Python(Tornado): 단일 프로세스에서 여러 요청이 차례로 실행되고, IO가 발생하면 다른 요청으로 전환됩니다. 단점: 단일 요청에 대해 여전히 가장 효율적인 시간 사용은 아닙니다.
"가장 효율적인 시간 사용"이란 무엇입니까? 예를 들어, 관련되지 않은 두 개의 데이터베이스 쿼리가 있습니다. PHP에서는 일반적으로 하나가 먼저 실행되고 두 번째 쿼리는 실행이 완료된 후 실행됩니다(총 시간은 b입니다). 분명히 이것은 가장 효율적이지 않으며 두 쿼리 모두입니다. 동시에 실행되어야 합니다. is max(a, b).

파이썬이나 멀티스레딩을 지원하는 다른 언어의 문제점은 언어 수준에서 프로그래머가 두 가지 작업을 동시에 수행해야 한다고 가상 머신에 지시하기 어렵다는 것입니다. 방법은 꽤 번거롭고 대부분의 사람들은 너무 게으르기 때문에 사용할 가치가 없습니다. 그리고 Node.js는 모든 IO를 비동기식으로 실행하도록 강제하기 때문에 Node.js 프로그래머도 이에 익숙하다고 할 수 있습니다. 코드 가독성을 향상시키는 일부 라이브러리(promise, async)를 사용하면 관련 없는 작업을 쉽게 병렬로 실행할 수 있습니다. .

위에서 비동기 IO 구현에 대해 논의했는데, 비동기 IO의 장점은 무엇인가요? 실제로 비동기 IO는 서버에 대한 부담을 마술처럼 줄일 수는 없습니다. 그러나 비동기 IO는 단일 요청 시간을 줄이고 의미 없는 대기 시간을 제거합니다. 단일 요청. 따라서 단위 시간당 처리되는 요청 수는 변하지 않지만, 각 요청의 처리 시간은 단축됩니다. 이러한 관점에서 서버는 일부 리소스, 즉 각 요청에 대한 연결을 유지하는 데 사용되는 메모리도 절약합니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

怎么使用pkg将Node.js项目打包为可执行文件?怎么使用pkg将Node.js项目打包为可执行文件?Jul 26, 2022 pm 07:33 PM

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

一文解析package.json和package-lock.json一文解析package.json和package-lock.jsonSep 01, 2022 pm 08:02 PM

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

分享一个Nodejs web框架:Fastify分享一个Nodejs web框架:FastifyAug 04, 2022 pm 09:23 PM

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

手把手带你使用Node.js和adb开发一个手机备份小工具手把手带你使用Node.js和adb开发一个手机备份小工具Apr 14, 2022 pm 09:06 PM

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

图文详解node.js如何构建web服务器图文详解node.js如何构建web服务器Aug 08, 2022 am 10:27 AM

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는