chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python性能之服務(wù)優(yōu)化的方法解析

馬哥Linux運(yùn)維 ? 2017-12-31 01:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

初看這個(gè)標(biāo)題,相信很多同學(xué)都笑了,python有性能可言么,呵呵噠...確實(shí)哦,python其實(shí)就是為了快速開(kāi)發(fā)應(yīng)用而出生的,雖然python的服務(wù)都以性能低而聞名全世界,但是總該有優(yōu)化的地方吧,呵呵噠....

這不,這兩天本作者就碰見(jiàn)了這樣一個(gè)問(wèn)題,首先自我介紹下,我是干嘛的,肯定是屌絲程序員了,這個(gè)猜都不用猜,要不然也不會(huì)蛋疼的寫(xiě)這篇文章了,我們組是基礎(chǔ)開(kāi)發(fā)組,就是專(zhuān)門(mén)開(kāi)發(fā)一些剝離業(yè)務(wù)的組件讓其他部門(mén)去用,比如業(yè)務(wù)監(jiān)控,業(yè)務(wù)報(bào)警,服務(wù)數(shù)據(jù)采集等等一堆搬磚的活.好了,廢話不多說(shuō)了,估計(jì)看到這的也都看煩了...你們真的煩了么

這樣滴,我們這有個(gè)收集業(yè)務(wù)數(shù)據(jù)的組件簡(jiǎn)稱(chēng)M好啦,首先他要在業(yè)務(wù)服務(wù)器上建個(gè)udpserver,然后就靜靜的等業(yè)務(wù)的客戶(hù)端上報(bào)數(shù)據(jù)過(guò)來(lái),數(shù)據(jù)格式是key-value形式的,然而就在最近幾天,有人在給業(yè)務(wù)機(jī)器做壓測(cè)的時(shí)候,發(fā)現(xiàn)一個(gè)問(wèn)題,隨著并發(fā)的增加,這個(gè)M組件的cpu使用率也在不斷上升,擦,這下服務(wù)器不愿意了,開(kāi)始瘋狂報(bào)警,然后做壓測(cè)的那個(gè)人就找我這來(lái)了,巴拉巴拉一堆,意思就是我給業(yè)務(wù)做壓測(cè),你收集數(shù)據(jù)的組件飚個(gè)毛啊......

然而我是那么容易被打倒的么,就解釋說(shuō)當(dāng)然啊,你在給業(yè)務(wù)壓測(cè)的時(shí)候,同時(shí)你的client也在請(qǐng)求我啊,相當(dāng)于我的并發(fā)量也在上升啊,不飚才怪呢,好吧,說(shuō)歸說(shuō),抱著工匠精神,開(kāi)始找問(wèn)題吧...

這個(gè)M組件是用python寫(xiě)的多線程的udpserver,經(jīng)本人測(cè)試,當(dāng)并發(fā)達(dá)到2000的時(shí)候,cpu就100%左右了,其實(shí)udp相比tcp而言性能已經(jīng)很高了,不過(guò)這個(gè)并發(fā)還是有點(diǎn)感人啊,改成多進(jìn)程也試了下,cpu占用還是70%左右,畢竟多進(jìn)程適用計(jì)算密集型的,于是就想到了協(xié)程,協(xié)程像是一種在程序級(jí)別來(lái)模擬系統(tǒng)級(jí)別 的進(jìn)程,由于是單進(jìn)程,并且少了上下文切換,于是相對(duì)來(lái)說(shuō)系統(tǒng)消耗很少,而網(wǎng)上的各種測(cè)試也表明,協(xié)程確實(shí)擁有驚人的速度。并且在實(shí)現(xiàn)過(guò)程中,協(xié)程可以 用以前同步思路的寫(xiě)法,而運(yùn)行起來(lái)確是異步的,挺有意思。

聽(tīng)說(shuō)python有個(gè)模塊叫做eventlet很強(qiáng)大,eventlet的核心是協(xié)程(也叫做green thread)。協(xié)程的好處是沒(méi)有線程開(kāi)銷(xiāo)來(lái)的大(比如切換代價(jià)很?。M瑫r(shí)協(xié)程由于調(diào)度都由開(kāi)發(fā)者自己決定,所以對(duì)lock的需求就很低了

010F5O38-0.png

上面是一個(gè)uds(unix domian socket)的例子,這里也是通過(guò)一個(gè)pool限制資源的使用。當(dāng)每個(gè)請(qǐng)求來(lái)的時(shí)候通過(guò)spawn_n方法把對(duì)這個(gè)請(qǐng)求的handle方法放到獨(dú)立的協(xié)程中去處理。而handle中的recv這些方法都是被綠化過(guò)的,所以如果讀取不到數(shù)據(jù)這些方法就會(huì)把cpu時(shí)間交出來(lái)給別的協(xié)程使用,eventlet還有一個(gè)衍生品gevent,先看看例子:

010F55c7-1.png

上面是官方的例子,gevent是一個(gè)基于libev的python并發(fā)框架,以微線程greenlet為核心,使用了epoll事件監(jiān)聽(tīng)機(jī)制以及諸多其他優(yōu)化而變得高效.而且其中有個(gè)monkey類(lèi), 將現(xiàn)有基于Python線程直接轉(zhuǎn)化為greenlet(類(lèi)似于打patch)。

我自己測(cè)試了下,無(wú)論是eventlet寫(xiě)的uds還是gevent寫(xiě)的udpserver 并發(fā)達(dá)到2000時(shí),cpu大概占用到30%左右,性能比之前降了2/3,效果還是很顯著的,不過(guò)這個(gè)還是沒(méi)有達(dá)到理想效果,后期準(zhǔn)備嘗試下日志的方式,應(yīng)該會(huì)比現(xiàn)在更省資源,就怕磁盤(pán)受不了,更何況我們用的還是所謂的云主機(jī)~

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 優(yōu)化
    +關(guān)注

    關(guān)注

    0

    文章

    220

    瀏覽量

    24564
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4848

    瀏覽量

    88923

原文標(biāo)題:榨干python性能之服務(wù)優(yōu)化

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    華納云服務(wù)器Linux系統(tǒng)電源管理與節(jié)能優(yōu)化配置方法

    在云計(jì)算時(shí)代,Linux系統(tǒng)的電源管理優(yōu)化成為提升云服務(wù)器能效的關(guān)鍵環(huán)節(jié)。本文將深入解析Linux內(nèi)核的電源管理機(jī)制,從CPU調(diào)頻策略到磁盤(pán)休眠設(shè)置,提供一套完整的節(jié)能配置方案。通過(guò)調(diào)整系統(tǒng)參數(shù)
    的頭像 發(fā)表于 08-21 15:09 ?387次閱讀

    鴻蒙5開(kāi)發(fā)寶藏案例分享---長(zhǎng)列表性能優(yōu)化解析

    鴻蒙長(zhǎng)列表性能優(yōu)化大揭秘!告別卡頓,實(shí)戰(zhàn)代碼解析來(lái)了! 大家好呀~今天在翻鴻蒙開(kāi)發(fā)者文檔時(shí),發(fā)現(xiàn)了個(gè) 性能優(yōu)化寶藏案例 !官方居然悄悄放出了
    發(fā)表于 06-12 17:40

    鴻蒙5開(kāi)發(fā)寶藏案例分享---性能優(yōu)化案例解析

    鴻蒙性能優(yōu)化寶藏指南:實(shí)戰(zhàn)工具與代碼案例解析 大家好呀!今天在翻鴻蒙開(kāi)發(fā)者文檔時(shí),意外挖到一個(gè) 性能優(yōu)化寶藏庫(kù) ——原來(lái)官方早就提供了超多實(shí)
    發(fā)表于 06-12 16:36

    性能飆升!使用Python并行計(jì)算榨干樹(shù)莓派算力!

    甚至微型服務(wù)器時(shí),你是否也遇到過(guò)程序卡頓、視頻處理延遲的尷尬?今天我們就手把手教你用Python并行處理技術(shù),讓樹(shù)莓派的性能瞬間翻倍!歡迎在評(píng)論區(qū)曬出你的優(yōu)化方案,
    的頭像 發(fā)表于 03-26 17:08 ?586次閱讀
    讓<b class='flag-5'>性能</b>飆升!使用<b class='flag-5'>Python</b>并行計(jì)算榨干樹(shù)莓派算力!

    HarmonyOS NEXT 原生應(yīng)用/元服務(wù)-DevEco Profiler性能優(yōu)化過(guò)程

    流程概覽 在開(kāi)發(fā)應(yīng)用時(shí),開(kāi)發(fā)者會(huì)對(duì)應(yīng)用的運(yùn)行情況有一個(gè)預(yù)期的指標(biāo),當(dāng)應(yīng)用在某些方面不能滿(mǎn)足預(yù)期的指標(biāo)或者表現(xiàn)不佳時(shí),意味著您的應(yīng)用可能存在性能問(wèn)題,需要對(duì)應(yīng)用進(jìn)行性能優(yōu)化以達(dá)到您的預(yù)期。應(yīng)用的
    發(fā)表于 02-19 15:28

    如何優(yōu)化TCP協(xié)議的性能

    優(yōu)化TCP協(xié)議的性能可以從多個(gè)方面入手,以下是一些關(guān)鍵的策略和方法: 一、調(diào)整TCP參數(shù) TCP窗口大小 : 重要性 :TCP窗口大小是衡量TCP協(xié)議性能的一個(gè)關(guān)鍵參數(shù),決定了無(wú)需等待
    的頭像 發(fā)表于 01-22 09:52 ?1259次閱讀

    Supermicro高性能服務(wù)器量產(chǎn)供貨,優(yōu)化多重工作負(fù)載

    Supermicro, Inc.近日宣布其搭載Intel Xeon 6900系列性能核架構(gòu)處理器的高性能服務(wù)器已開(kāi)始量產(chǎn)供貨。 這一系列服務(wù)器采用了多種升級(jí)后的創(chuàng)新技術(shù),并結(jié)合了新型
    的頭像 發(fā)表于 01-21 11:00 ?668次閱讀

    【教程】DNS域名解析服務(wù)systemd-resolved使用指南

    1.關(guān)于DNS解析服務(wù)DNS(DomainNameSystem),即域名系統(tǒng)。一句話總結(jié)DNS解析服務(wù)功能就是,將域名轉(zhuǎn)換為IP地址。DNS解析
    的頭像 發(fā)表于 01-09 19:34 ?1874次閱讀
    【教程】DNS域名<b class='flag-5'>解析</b><b class='flag-5'>服務(wù)</b>systemd-resolved使用指南

    NTP服務(wù)器的性能優(yōu)化方法

    NTP(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議)服務(wù)性能優(yōu)化對(duì)于確保時(shí)間同步的準(zhǔn)確性和可靠性至關(guān)重要。以下是一些NTP服務(wù)
    的頭像 發(fā)表于 12-18 15:24 ?1489次閱讀

    Linux性能優(yōu)化

    一、優(yōu)化內(nèi)核相關(guān)參數(shù) 配置文件/etc/sysctl.conf 配置方法直接將參數(shù)添加進(jìn)文件每條一行 sysctl -a 可以查看默認(rèn)配置sysctl -p 執(zhí)行并檢測(cè)是否有錯(cuò)誤 1、網(wǎng)絡(luò)相關(guān)
    的頭像 發(fā)表于 12-06 10:15 ?890次閱讀
    Linux<b class='flag-5'>之</b><b class='flag-5'>性能</b><b class='flag-5'>優(yōu)化</b>

    HarmonyOS Web開(kāi)發(fā)性能優(yōu)化指導(dǎo)

    的影響因素以及對(duì)應(yīng)的優(yōu)化方案。 二、Web頁(yè)面加載性能優(yōu)化指導(dǎo) (一)Web頁(yè)面加載流程 Web頁(yè)面加載包含網(wǎng)絡(luò)連接、資源下載、DOM解析、JavaScript代碼編譯執(zhí)行和渲染等關(guān)鍵
    發(fā)表于 12-06 08:41

    如何優(yōu)化SSR渲染性能

    服務(wù)器端渲染(SSR)是一種將前端頁(yè)面在服務(wù)器端生成的技術(shù),它可以提高首屏加載速度,改善SEO,并提供更好的用戶(hù)體驗(yàn)。然而,SSR也可能帶來(lái)性能挑戰(zhàn),尤其是在處理大量請(qǐng)求時(shí)。以下是一些優(yōu)化
    的頭像 發(fā)表于 11-18 11:31 ?1221次閱讀

    Python中代理服務(wù)器的配置與應(yīng)用

    在網(wǎng)絡(luò)通信中,代理服務(wù)器作為一種重要的網(wǎng)絡(luò)中間件,充當(dāng)著客戶(hù)端和目標(biāo)服務(wù)器之間的中間人角色。它能夠接收來(lái)自客戶(hù)端的請(qǐng)求,并將這些請(qǐng)求轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器,然后將服務(wù)器的響應(yīng)返回給客戶(hù)端。
    的頭像 發(fā)表于 11-12 07:13 ?765次閱讀

    AI大模型的性能優(yōu)化方法

    AI大模型的性能優(yōu)化是一個(gè)復(fù)雜而關(guān)鍵的任務(wù),涉及多個(gè)方面和策略。以下是一些主要的性能優(yōu)化方法: 一、模型壓縮與
    的頭像 發(fā)表于 10-23 15:01 ?2967次閱讀

    使用Python構(gòu)建高效的HTTP代理服務(wù)

    構(gòu)建一個(gè)高效的HTTP代理服務(wù)器在Python中涉及多個(gè)方面,包括性能優(yōu)化、并發(fā)處理、協(xié)議支持(HTTP/HTTPS)、錯(cuò)誤處理以及日志記錄等。
    的頭像 發(fā)表于 10-23 07:41 ?755次閱讀