補 系統架構
Cdn 內容分發網絡 全稱是Content Delivery Network
面試:Cdn 的時間算法,基於什么的算法
面試題:大數據遷移怎么遷移,比如你服務器上有一個10個G的日志文件,你怎么去遷移 (01:42分左右)
傳之前 校驗MD5 傳之后 再校驗MD5 確保傳過去的數據一致
保證完整性
根據網絡傳輸效率,考慮怎么分片 服務器直接用scp 命令
傳輸完成后校驗MD5 然后再組裝
存儲分片(某個扇區損壞不影響其他扇區) 多線程
速度快,安全系數高
所有的文件都是二進制形式保存,取決於你以什么形式打開
利用分片傳輸+多線程傳輸的機制
1.分片,把大內存的數據分成n片
2.md5 算法校驗,在傳輸前傳輸后分別校驗,檢查文件傳輸正確性、完整性后 再組裝
3.多線程傳,使用時間為單線程的n分之一
https://blog.csdn.net/ltx06/article/details/70162107
如果需要集成php 用lampp 集成包
Find / -name httpd 查找命令 / 根目錄下的所有路徑 -name 通過名字
Find / |grep httpd 模糊查找
Yum 安裝
apache /etc/httpd 配置文件 為 httpd.conf 可執行文件
/usr/sbin/httpd 啟動apache service httpd start|restart|stop (yum 安裝會作為一個系統服務)
B,使用安裝包安裝
C,Lampp 自帶的httpd
bin 目錄所有可執行文件
/opt/lampp/etc lampp 配置文件
/opt/lampp/etc/extra 擴展的配置文件
查看Apache 版本:
/opt/lampp/bin/httpd -v 查看apache 版本
/usr/sbin/httpd -V 查看你安裝的apache的版本信息等細節
配置文件 :/opt/lampp/etc/httpd.conf
/etc/httpd/conf/httpd.conf
配置文件常見修改的地方:
ServerRoot "/opt/lampp"
Listen 監聽 直接提供端口 Listen 9090
3、Apache 主要目錄和配置文件
命令:
配置文件 :/opt/lampp/etc/httpd.conf
/etc/httpd/conf/httpd.conf
查看進程
ps -ef ps -aux
ps -ef
Root 用戶啟動主進程的同時會啟動一些子進程
所以 部署php項目,將項目代碼放到/opt/lamp/htdocs該目錄下
訪問項目時,http://ip:端口號/項目名 便可訪問
如果無法訪問:1,查看該項目是否放至在apache默認web站點目錄路徑下;2,項目名是否正確 ( bbs 文件名為upload 所以需要先改名為bbs)
Php 項目都是熱啟動 項目不停止運行
1、拉代碼
2、修改配置文件

數據庫遷移的時候需要手動修改該文件
請求日志 看access_log
Apache 擴展文件
重點:Apache 工作模式
用的系統的apache /opt/lampp/etc/extra 下的httpd-mpm.conf
web 服務器Apache 目前一共有三種穩定的MPM(Multi -Processing Module,多進程處理模塊)模式。它們分別是prefork ,worker和event
查看當前工作模式
/opt/lampp/bin/httpd -v 查看apache 版本
/usr/sbin/httpd -V 查看你安裝的apache的版本信息等細節
中Server MPM 字段
1、Prefork 模式 單進程單線程,一對一
Prefork MPM是一個非常穩定的模式,Apache 在啟動之初,會預派生fork 一些子進程,然后等待請求進來,並且總會保持一些備用的子進程。
同時派生出的每個子進程只有一個線程,在一個時間點內只能處理一個請求。Prefork MPM在效率上要比Worker MPM高,但是在內存使用方面也會大很多。
它並不擅長處理高並發請求,在這種場景下,它會將請求放進隊列中,一直等到有可用進程,請求才會被處理。
長連接:保持的時間比較長,比如視頻
參數詳解:
StartServers //指定服務器啟動時建立的子進程數,默認為5
MinSpareServers //指定空閑子進程的最小數量,默認為5.如果當前空閑子進程數小於配置的數量則Apache會以最大每秒一個的速度創建新的子進程
MaxSpareServers //指定空閑子進程的最大數量,默認為10.如果當前有超過設置的最大進程數則會殺死多余的進程,如果設置的比MinSpareServers 小,則Apache會默認修改為MinSpareServers +1
MaxRequestWorkers //限定服務器同一時間內客戶端最大接入的請求數量,默認是150.任何超過了該限制的請求都要進入等待隊列,
一旦一個個連接被釋放,隊列中的請求才將得到服務。在Apache2.3 前又叫MaxClients
MaxConnectionsPerChild //每個子進程的在其生命周期內允許最大的請求數量,如果請求總數已經達到這個數值,子進程將會結束;
如果設置為0,子進程將永遠不會結束。若該值設置為非0值,可以防止運行PHP導致的內存泄漏(結束以后會釋放內存)。
一個請求結束后會保留一些“臟數據”,連接的請求越多臟數據越多,到達一定程度后會結束該進程,釋放內存。
ServerLimit 2000 //MaxRequestWorkers(MaxClients)最大是256個線程,如果需要更大就需要加上該參數了。
這個參數的最大值是2000,如果需要更大需要編譯apache。生效前提:必須放在其他指令的前面
進程數與cpu 有關 不可能全部占滿、
思考:那要是避免排隊的情況 可以直接改 prefork的數值嗎?
2、Aache工作模式-Work模式 單進程,多線程 一對多
參數詳解:
StartServers //服務器啟動時創建的子進程數
MaxClients //
MinSpareThreads //最小空閑線程數,這個MPM將基於整個服務器監控空閑線程數。假如服務器中的空閑線程數太少,則將會創建新的空閑線程
MaxSpareThreads //最大空閑線程數。這個MPM將基於整個服務器監控空閑線程數。假如服務器中的總的空閑線程數太多,子進程將殺死多余的空閑線程。最大
空閑線程數的取值范圍是有限制的。Work 需要其大於等於MinSpareThreads 和ThreadsPerChild 的總和
ThreadsPerChild //每個子進程建立的常駐執行線程數,子進程在啟動時建立這些線程后就不會再建立新線程了
MaxRequestsPerChild //允許同時伺服的最大接入請求數量。任何超過該限制的請求都將進入等候隊列
每個進程能處理多少個請求,處理完成后則會死掉
思考:現有如下配置
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25 固定為25不可變
MaxRequestsPerChild 0 每個進程能處理多少個請求,處理完成后則會死掉 釋放內存
</IfModule>
4個進程 每個進程允許25個線程 總共100個 不符合maxsparethreads 75
則會殺掉一個進程 則代表一次性殺掉了25個線程 符合maxsparethreads
在25 ~ 75 之間 不會做任何修改
如果不滿足最小的minsparethreads 25 則會創建一個進程
Work 模式不安全 一個進程死掉后子線程全部被殺掉
3、Apache工作模式-Event模式 (具體參考ppt)
Apache 工作模式切換
切換工作模式 修改文件名即可 默認是prefork
舉例說明:把這個改為httpd名,工作模式變為work
用同一個配置文件,端口一定會被占用
重點:Apache 監控
一、如何獲取apache監控參數
Vi /etc/httpd/conf/httpd.conf
SetHandler 加載某個模塊
order 先執行deny
重啟apache 項目是實時讀取的,但自身配置不是,所以需要重啟
瀏覽器輸入:http://ip/server-status
Apache 優化