最近遇到数据量比较大并且更新速度很快的情况,这样导致两台服务器同步稍有延迟的情况出现,同时负载升高。
如果使用sleep 每10秒 休眠1秒的做法是否能缓解数据库的压力呢?我很想知道sleep是否会占用很多资源,sleep执行的时候都做了些什么事呢?
但是有人说单线程休眠时间越长占用资源就越多,是这样吗?
如果自己验证该如何切入呢?
网上搜了下关于sleep的资料但是没发现有太大价值的,实在想不通到底该怎么解决好了
回复内容:
最近遇到数据量比较大并且更新速度很快的情况,这样导致两台服务器同步稍有延迟的情况出现,同时负载升高。
如果使用sleep 每10秒 休眠1秒的做法是否能缓解数据库的压力呢?我很想知道sleep是否会占用很多资源,sleep执行的时候都做了些什么事呢?
但是有人说单线程休眠时间越长占用资源就越多,是这样吗?
如果自己验证该如何切入呢?
网上搜了下关于sleep的资料但是没发现有太大价值的,实在想不通到底该怎么解决好了
sleep不占用系统资源,它会把cpu的控制权交换给内核,内核会再schedule到另一个进程。
这种简单的事情,你写个while (true) sleep(1)的程序然后top一下就能判断的。
任何语言, sleep本身不占CPU资源, 但是在基于PHP的LAMP环境中, 就不能这样说了, 因为CPU不是唯一的资源. 进程数, 内存, 这些都是资源.
PHP不管工作工作在apache mod_php还是nginx fpm下, 总的进程数基本上是有一个限制的. 对于服务器的吞吐, 有一个很简单的算数, 你有几个线程/进程, 你就能同时处理多少http请求
但是, 一单在PHP里面sleep, 那么php处理请求的时间就等于本身处理的时间+sleep时间
本来0.2秒处理一个请求, 现在sleep了0.8秒, 那么你的php请求处理速度就变成1秒, 假设你的apache开10个进程, 那么你每秒钟处理请求的速度就由5个每秒*10个进程 50 变成了 1个每秒*10个进程.
另外你不可能在apache里面开无限的的进程, 不管是进程还是线程, 都开销很大, 1024个进程基本上就死的很惨了, 线程在5k左右(CPU使用不多, 大部分sleep的情况下)也很吃力了
如果你sleep 10秒, 整个PHP, web系统就没办法用了, 曾经有人想通过sleep来做长连接, 本机测试通过了, 但是部署上系统无异于自杀.
之前也用php写过后台方面的程序,主进程需要等待所有子进程结束后再退出,之前采取的“忙等”,发现主进程将CPU占完了,后来主进程在等待循环中采用了sleep(1)的方式,大大减少了cpu开销,所以我认为sleep应该不会占用太多CPU。仅供楼主参考!
@felix021 和 @KJ 说的都对,你需要评估一下在sleep中,有哪些资源是占用的,比如HTTP连接,数据库连接。尤其是数据库最大并发连接通常要少于HTTP连接,需要小心连接被吃满的情况。如果是脚本下执行的PHP,那sleep是很简单靠谱的办法;如果是web,需慎重。

thesecrettokeepingAphp-poweredwebsiterunningsmoothlydlyUnderHeavyloadInvolvesEveralKeyStrategies : 1) ubstractOpCodeCachingWithOpCacheTecescripteExecutionTime, 2) usedatabasequeryCachingwithRedSendatabaseload, 3) LeverAgeCdnslikeCloudforforporerververforporporpin

Code는 코드가 더 명확하고 유지 관리하기 쉽기 때문에 의존성 주입 (DI)에 관심을 가져야합니다. 1) DI는 클래스를 분리하여 더 모듈 식으로 만들고, 2) 테스트 및 코드 유연성의 편의성을 향상시키고, 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하지만 성능 영향 및 순환 종속성에주의를 기울이십시오. 4) 모범 사례는 추상 인터페이스에 의존하여 느슨한 커플 링을 달성하는 것입니다.

예, PPAPPLICATIONISPOSSIBLEADESLESTION.1) INVERECINGUSINGAPCUTERODUCEDABASELOAD.2) INCODINCEDEXING, ENGICIONEQUERIES 및 CONNECTIONPOULING.3) 향상된 보드 바이어링, 플로 팅 포르코 잉을 피하는 최적화 된 APPCUTERODECEDATABASELOAD.2)

theKeyStrategiesToSINCINTIFILINTINTIFILINTINTHPPORMATIONPERFORMANCEARE : 1) USEOPCODECACHING-CCHACHETEDECUTECUTINGTIME, 2) 최적화 된 ABESINSTEMENTEMENDSTEMENTEMENDSENDSTATEMENTENDS 및 PROPERINDEXING, 3) ConfigureWebSerVERSLIKENGINXXWITHPMFORBETPERMERCORMANCES, 4)

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

Dreamweaver Mac版
시각적 웹 개발 도구

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

드림위버 CS6
시각적 웹 개발 도구