補 系統架構php
Cdn 內容分發網絡 全稱是Content Delivery Networkmysql
面試:Cdn 的時間算法,基於什麼的算法nginx
面試題:大數據遷移怎麼遷移,好比你服務器上有一個10個G的日誌文件,你怎麼去遷移 (01:42分左右)web
傳以前 校驗MD5 傳以後 再校驗MD5 確保傳過去的數據一致面試
保證完整性 redis
根據網絡傳輸效率,考慮怎麼分片 服務器直接用scp 命令算法
傳輸完成後校驗MD5 而後再組裝sql
存儲分片(某個扇區損壞不影響其餘扇區) 多線程數據庫
速度快,安全係數高apache
全部的文件都是二進制形式保存,取決於你以什麼形式打開
利用分片傳輸+多線程傳輸的機制
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
三、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 項目都是熱啓動 項目不中止運行
一、拉代碼
二、修改配置文件
數據庫遷移的時候須要手動修改該文件
請求日誌 看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 字段
一、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的數值嗎?
二、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 模式不安全 一個進程死掉後子線程所有被殺掉
三、Apache工做模式-Event模式 (具體參考ppt)
Apache 工做模式切換
切換工做模式 修改文件名便可 默認是prefork
舉例說明:把這個改成httpd名,工做模式變爲work
用同一個配置文件,端口必定會被佔用
重點:Apache 監控
1、如何獲取apache監控參數
Vi /etc/httpd/conf/httpd.conf
SetHandler 加載某個模塊
order 先執行deny
重啓apache 項目是實時讀取的,但自身配置不是,因此須要重啓
瀏覽器輸入:http://ip/server-status
Apache 優化