新聞中心
隨著互聯(lián)網(wǎng)時代的來臨,Web應(yīng)用程序越來越普及,而在這些程序中,Worker是非常重要的一部分,它承擔(dān)了很多任務(wù),如處理請求、數(shù)據(jù)采集、任務(wù)分配等。在Linux系統(tǒng)中,如何快速新建Worker是一個值得大家關(guān)注的問題。

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的上栗網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一、Worker是什么?
Worker即工人,它是一種輕量級的進(jìn)程或線程,承載著Web應(yīng)用程序中的后臺任務(wù)。Worker的功能十分重要,它可以在后臺運行,執(zhí)行一些相對獨立的任務(wù),并且不會影響Web應(yīng)用程序的主流程。
二、Worker的優(yōu)點
1. 支持多任務(wù)
Worker可以同時處理多個任務(wù),提高程序效率。
2. 穩(wěn)定性高
Worker作為一個單獨進(jìn)程或線程運行,有利于程序的穩(wěn)定性,不受其他因素的影響。
3. 更好的性能
Worker運行在后臺,不影響Web應(yīng)用程序的主流程,有助于提高程序效率,減輕服務(wù)器壓力。
三、如何新建Worker?
新建Worker需要考慮到一些因素,包括程序的設(shè)計、實現(xiàn)方式等。下面介紹幾種方式。
1. 使用多線程技術(shù)
多線程是一種常用的實現(xiàn)方式,可以通過創(chuàng)建線程池、線程隊列等方式快速新建Worker。在Linux中,可以使用pthread庫實現(xiàn)。
2. 使用fork技術(shù)
fork是Linux系統(tǒng)中的一種系統(tǒng)調(diào)用,可以快速創(chuàng)建子進(jìn)程。使用fork技術(shù)可以實現(xiàn)Worker的動態(tài)派生,進(jìn)程之間相互獨立,可以有效減少程序的壓力。
3. 使用進(jìn)程池技術(shù)
進(jìn)程池是一種常用的設(shè)計方式,在程序需要頻繁創(chuàng)建進(jìn)程的場景下,可以通過進(jìn)程池實現(xiàn)進(jìn)程的復(fù)用。在Linux中,可以使用fork技術(shù)和信號量等方式實現(xiàn)進(jìn)程池。
四、如何優(yōu)化Worker?
新建Worker只是之一步,優(yōu)化Worker才是最終目的。在實際應(yīng)用中,可能會遇到Worker運行不穩(wěn)定、處理任務(wù)效率低等問題。下面介紹如何優(yōu)化Worker。
1. 管理進(jìn)程
在使用多進(jìn)程或線程實現(xiàn)Worker時,需要考慮到進(jìn)程的管理和資源分配??梢允褂眯盘柫康确绞剑刂七M(jìn)程的數(shù)量和資源消耗,保證程序的穩(wěn)定性。
2. 控制CPU使用率
CPU是Worker運行的基礎(chǔ),控制CPU使用率可以優(yōu)化程序效率??梢酝ㄟ^限制進(jìn)程的CPU使用率、創(chuàng)建進(jìn)程池等方式實現(xiàn)。
3. 減少I/O操作
I/O操作是Worker性能問題的一個重要因素,過多的I/O操作會影響程序效率??梢酝ㄟ^提高硬件設(shè)備的讀寫速度、緩存操作等方式優(yōu)化I/O操作。
四、
隨著互聯(lián)網(wǎng)應(yīng)用程序的不斷發(fā)展,Worker成為了程序設(shè)計的重要組成部分,它承載著Web應(yīng)用程序的后臺任務(wù)。在Linux中,新建Worker和優(yōu)化Worker是非常重要的,它可以有效提高程序效率、減輕服務(wù)器壓力。同時,在實際應(yīng)用中還需要注意進(jìn)程的管理、CPU使用率、I/O操作等問題,才可以實現(xiàn)真正意義上的優(yōu)化。
相關(guān)問題拓展閱讀:
- Trojan手動搭建詳解
Trojan手動搭建詳解
安裝acme
.sh
需要的依賴。
執(zhí)行如下命令使用nano打開Nginx配置文件,刪除其中server塊,并添加對/etc/nginx/sites-enabled/文件夾的索引。
如果遇到 setenforce: SELinux is disabled錯誤,說明selinux已經(jīng)被徹底的關(guān)閉了
重新開啟selinux,請按下面步驟:
必須重啟linux
Nginx啟動命令和Trojan一樣,就不過多解釋了
當(dāng)從Let’s Encrypt獲得證書時,Let’s Encrypt會驗證證書中域名的控制權(quán)。一般采用HTTP-01或DNS-01方式來驗證,詳情參考官方文檔 驗證方式 。本文使用HTTP-01方式驗證,若需要使用DNS-01方式驗證,參考acme.sh官方文檔 How to use DNS API 。
之一條命令新建一個文件夾/etc/letsencrypt/live用于存放證書。第二條命令將證書文件夾所有者改為acme,使得用戶acme有權(quán)限寫入證書。
本文使用acme.sh的http方式申請證書,http方式需要在網(wǎng)站
根目錄
下放置一個文件來驗證域名所有權(quán),故需要acme.sh和nginx均對webroot目錄有權(quán)限,故將運行Nginx的worker進(jìn)程加入certusers組,下文再將webroot目錄附加給certusers組即可。
在不同的Linux發(fā)新版本中,nginx可能使用不同的用戶運行worker process,可能為www-data,nginx,nobody中的一個,故需要自己運行下述命令查找nginx: worker process所屬用戶:
上述命令輸出第二行之一列即為nginx: worker process所屬用戶,然后根據(jù)實際情況,運行下面三個命令之一:
運行下面兩條命令,之一條命令新建一個文件跡唯信姿輪夾/var/www/acme-challenge用于給 acme.sh 存放域名驗證文件。第二條命令將證書文件夾所有者改為acme,使得用戶acme有權(quán)限寫入文件,同時當(dāng)驗證的時候Nginx可以讀取該文件。
分別執(zhí)行如下命令,注意看是否報錯。之一條命令切換到用戶acme。第二條命令安裝acme.sh。第三條命令退出當(dāng)前用戶。第四條命令再次切換到用戶acme。注意到這里兩次切換用戶的操作不能省略,因為安裝完acme.sh之后要重新登錄當(dāng)前用戶,否則無法識別出acme.sh命令。
執(zhí)行如下命令(注意域名改為你自己的域名),等待一會兒。
看到下圖的提示表示證書申請成功。
執(zhí)行如下命令(注意域名改為你自己的域名),之一條命令使用acme.sh將證書安裝到certfiles目錄,這樣acme.sh更新證書的時候會自動將新的證書安裝到這里。第二條命令是配置acme.sh自動更新和自動更新證書,這樣配置完Trojan之后一般不用管服務(wù)器。
最后還要允許組內(nèi)用戶訪問證書。可通過如下命令實現(xiàn)。之一條命令將證書文件夾所在用戶組改為certusers。第二條命令是賦予證書文件夾組內(nèi)用戶讀取權(quán)限。運行這兩條命令之后用戶trojan就有權(quán)限讀取證書了。第三條命令退出用戶acme,因為證書已經(jīng)安裝完成。
分別執(zhí)行如下四個命令,注意看是否報錯。之一個命令是安裝Trojan,安裝完成一般會提示
版本號
注意看是否是最新版本。第二個命令是山判將Trojan配置文件的所有者修改為用戶trojan,由于使用sudo安裝的Trojan,該配置文件默認(rèn)是屬于root用戶的,而我們需要使用用戶trojan運行Trojan,不修改所有者會導(dǎo)致啟動Trojan遇到權(quán)限問題。第三個命令備份Trojan配置文件,以防萬一。第四個命令是使用nano修改配置文件。
第四個命令執(zhí)行完之后屏幕會顯示Trojan的配置文件,定位到password、cert和key并修改。密碼按自己喜好,cert和key分別改為/etc/letsencrypt/live/certificate.crt和/etc/letsencrypt/live/private.key。編輯完成配置文件之后按屏幕下方
快捷鍵
提示(O和X即:Ctrl+O和Ctrl+X)保存并退出nano。修改之后的config文件如圖所示。另外,如果有
IPv6地址
,將local_addr的0.0.0.0改為::才可以使用。
執(zhí)行如下命令,打開trojan.service文件,并將用戶修改為trojan。
添加用戶效果如圖所示,注意等號旁邊沒有空格。
然后重新加載配置文件。
執(zhí)行如下命令,賦予Trojan監(jiān)聽1024以下端口的能力,使得Trojan可以監(jiān)聽到
443端口
。這是由于我們使用非root用戶啟動Trojan,但是Linux默認(rèn)不允許非root用戶啟動的進(jìn)程監(jiān)聽1024以下的端口,除非為每一個二進(jìn)制文件顯式聲明。
Trojan啟動、查看狀態(tài)命令分別如下,之一條是啟動Trojan,第二條是查看Trojan運行狀態(tài)。啟動之后再查看一下狀態(tài),Trojan顯示active (running)即表示正常啟動了。如果出現(xiàn)fatal: config.json(n): invalid code sequence錯誤,那么是你的配置文件第n行有錯誤,請檢查。如果啟動失敗,還可以用journalctl -f -u trojan查看systemd的日志。
雖然開機(jī)自啟一般用不著,除非vultr機(jī)房停電,但是反正也沒什么代價,弄一下吧。
到這里服務(wù)器就配置完成了。此時你可以在瀏覽器里面訪問你的網(wǎng)站看是否能夠訪問,如果你的網(wǎng)站可以訪問了,那么就一切正常啦。
另外,基于以上考慮到的可能的惡意探測,可以驗證一下以下情況是否正常。
當(dāng)acme.sh重新安裝證書之后,需要通知Trojan重新加載證書。最簡單的方案是每三個月登錄服務(wù)器重啟Trojan,但是不夠完美,畢竟重啟的時候會導(dǎo)致服務(wù)中斷。其實Trojan有實現(xiàn) reload certificate and private key 功能,只需要在證書更新后給Trojan發(fā)送 SIGUSR1 消息即可。Trojan收到 SIGUSR1 消息后便會自動加載新的證書和密鑰文件,這樣就不用重啟Trojan了。手動給Trojan發(fā)送 SIGUSR1 消息的命令是 sudo -u trojan killall -s SIGUSR1 trojan ,但是這樣也不夠完美,也得每三個月登錄服務(wù)器運行一次該命令。其實我們可以給用戶 trojan 添加定時任務(wù),使其每個月運行一次該命令即可。實現(xiàn)如下。
首先,編輯用戶 trojan 的crontab文件
在文件末尾添加一行如下,該行表示每個月1號的時候運行命令killall -s SIGUSR1 trojan,由于是使用用戶trojan運行的,故不需要在前面加sudo -u trojan。
最后查看crontab是否生效。
linux 新建worker的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux 新建worker,Linux如何快速新建worker,Trojan手動搭建詳解的信息別忘了在本站進(jìn)行查找喔。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務(wù)商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
當(dāng)前名稱:Linux如何快速新建worker (linux 新建worker)
路徑分享:http://m.fisionsoft.com.cn/article/cocggco.html


咨詢
建站咨詢
