久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

基于PHP-FPM進程池探秘

下面小編就為大家帶來一篇基于PHP-FPM進程池探秘。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

PHP 支持多進程而不支持多線程;PHP-FPM 在進程池中運行多個子進程并發處理所有連接請求。通過 ps 查看PHP-FPM進程池(pm.start_servers = 2)狀態如下:

root@d856fd02d2fe:~# ps aux -L
USER  PID LWP %CPU NLWP %MEM VSZ RSS TTY  STAT START TIME COMMAND
root   1  1 0.0 1 0.0 4504 692 ?  Ss 13:10 0:00 /bin/sh /usr/local/php/bin/php-fpm start
root   7  7 0.0 1 0.4 176076 19304 ?  Ss 13:10 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www-data  8  8 0.0 1 0.2 176076 8132 ?  S 13:10 0:00 php-fpm: pool www
www-data  9  9 0.0 1 0.2 176076 8132 ?  S 13:10 0:00 php-fpm: pool www
root  10 10 0.0 1 0.0 18376 3476 ?  Ss 14:11 0:00 bash
root  66 66 0.0 1 0.0 34420 2920 ?  R+ 15:13 0:00 ps aux -L

從列表中可以看出,進程池www中有兩個尚處于空閑狀態的子進程PID 8和 PID 9。注:NLWP指輕量級進程數量,即線程數量。

PHP-FPM(FastCGI Process Manager)是什么?PHP-FPM為PHP-CGI提供進程管理方式,可以有效控制內存和進程,可以平滑重載PHP配置,其master process是常駐內存的。FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中更長時間,不是fork-and-execute,并因此獲得較高的性能。FastCGI支持分布式部署,可以部署在WEB服務器以外的多個主機上。

探秘手段:模擬多線程并發執行

1. 什么是線程:線程有時又稱輕量級進程(Lightweight Process,LWP),通常由線程ID、當前指令指針(PC)、寄存器集合和堆棧組成,是進程中的一個實體,是被系統獨立調度的基本單位;線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,與同屬一個進程的其它線程共享進程所擁有的全部資源。 由于線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。由于進程是資源擁有者,創建、撤消與切換開銷過大,在對稱多處理機(SMP)上同時運行多個線程(Threads)才是更合適的選擇。線程的實體包括程序、數據和線程控制塊(Thread Control Block,TCB),TCB包括以下信息:

(1)線程狀態;

(2)當線程不運行時,被保存的現場資源;

(3)一組執行堆棧;

(4)存放每個線程的局部變量主存;

(5)訪問同一個進程中的主存和其它資源。

但使用多個進程會使得應用程序在出現進程池內的進程崩潰或被攻擊的情況下變得更加健壯。

2. 模擬多線程:

<?php
/**
 * PHP 只支持多進程不支持多線程。
 *
 * PHP-FPM 在進程池中運行多個子進程并發處理所有連接,
 * 同一個子進程可先后處理多個連接請求,但同一時間
 * 只能處理一個連接請求,未處理連接請求將進入隊列等待處理
 *
 */

class SimulatedThread
{
 //模擬線程
 private $thread;

 //主機名
 private $host = 'tcp://172.17.0.5';

 //端口號
 private $port = 80;

 public function __construct()
 {
  //采用當前時間給線程編號
  $this->thread = microtime(true);
 }

 /**
  * 通過socket發送一個新的HTTP連接請求到本機,
  * 此時當前模擬線程既是服務端又是模擬客戶端
  *
  * 當前(程序)子進程sleep(1)后會延遲1s才繼續執行,但其持有的連接是繼續有效的,
  * 不能處理新的連接請求,故這種做法會降低進程池處理并發連接請求的能力,
  * 類似延遲處理還有time_nanosleep()、time_sleep_until()、usleep()。
  * 而且sleep(1)這種做法并不安全,nginx依然可能出現如下錯誤:
  * “epoll_wait() reported that client prematurely closed connection,
  * so upstream connection is closed too while connecting to upstream”
  *
  * @return void
  */
 public function simulate()
 {
  $run = $_GET['run'] ?? 0;
  if ($run++ < 9) {//最多模擬10個線程
   $fp = fsockopen($this->host, $this->port);
   fputs($fp, "GET {$_SERVER['PHP_SELF']}?run={$run}\r\n\r\n");
   sleep(1);//usleep(500)
   fclose($fp);
  }

  $this->log();
 }

 /**
  * 日志記錄當前模擬線程運行時間
  *
  * @return void
  */
 private function log()
 {
  $fp = fopen('simulated.thread', 'a');
  fputs($fp, "Log thread {$this->thread} at " . microtime(true) . "(s)\r\n");

  fclose($fp);
 }
}

$thread = new SimulatedThread();
$thread->simulate();
echo "Started to simulate threads...";

探秘匯總:本人通過運行上述腳本后,發現一些可預料但卻不是我曾想到的結果

1. PHP-FPM配置項pm.max_children = 5,simulated.thread記錄如下:

Log thread 1508054181.4236 at 1508054182.4244(s)
Log thread 1508054181.4248 at 1508054182.4254(s)
Log thread 1508054181.426 at 1508054182.428(s)
Log thread 1508054181.6095 at 1508054182.6104(s)
Log thread 1508054182.4254 at 1508054183.4262(s)
Log thread 1508054183.4272 at 1508054183.4272(s)
Log thread 1508054182.4269 at 1508054183.4275(s)
Log thread 1508054182.4289 at 1508054183.43(s)
Log thread 1508054182.6085 at 1508054183.6091(s)
Log thread 1508054182.611 at 1508054183.6118(s)
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了解決Linux下php-fpm進程過多導致內存耗盡問題,需要的朋友可以參考下
本文主要講解了在linux下php-fpm一些重要參數的中文詳細說明,并詳細介紹了php-fpm關于性能方面的參數優化介紹
這篇文章主要給大家介紹了解決php-fpm.service not found問題的辦法,文中詳細介紹的解決這個問題的思路與過程,分享出來給大家,如果有同樣問題的朋友就不用到處找解決辦法了,下面來
主站蜘蛛池模板: 日本免费在线观看视频 | 国产欧美日韩一区 | 性高朝久久久久久久3小时 av一区二区三区四区 | 亚洲精品在线免费播放 | 一区二区三区在线 | 国产精品久久精品 | 一区二区三区视频免费看 | 日韩一区二区免费视频 | 色综合成人网 | 91精品久久久久久久久久入口 | 999www视频免费观看 | 欧美亚洲一区二区三区 | 欧美手机在线 | 四虎av电影| 午夜在线电影网 | 91高清免费 | 国产区精品在线观看 | 久热国产精品视频 | 亚洲免费毛片 | 欧美日韩国产一区二区三区 | 日韩视频a | jizz在线看片 | 国产美女在线播放 | 午夜日韩 | 欧美电影在线观看网站 | 成人免费淫片aa视频免费 | 在线观看国产视频 | 91亚洲欧美 | 欧美日韩欧美 | 久久午夜剧场 | 曰韩一二三区 | 亚洲激情在线 | 日韩中文字幕一区 | 国产亚洲精品美女久久久久久久久久 | 精品久久久久久 | 成人字幕网zmw | 99精品国产一区二区三区 | 在线播放中文字幕 | 国产精品免费在线 | 日韩五月天 | 亚洲人成人一区二区在线观看 |