歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

linux 系統

linux 最小化 :系統 服務 命令 權限
web請求 :用戶輸入網址 dns解析ip 浏覽器解析端口號 建立tcp連接 向服務端發起http請求 服務器返回響應信息 關閉http 和 tcp連接
nginx 配置+負載均衡
--config
性能 連接超時和fastcgi gzip expire robot static cdn 並發連接和請求速率
安全 軟件名和版本號 目錄權限 http請求
用戶體驗 錯誤頁面
--balance
location user_agent ext_name
mysql 多實例+主從
主庫鎖表flush table with read lock 備庫只讀 主庫導出mysqldump -x —master-data=1 解鎖主表 unlock tables
show master status | change master |start slave |show slave status (slaveIO masterIO SQL線程檢測RelayLog)
stop slave 跳過 set global sql_slave_skip_counter=1 or slave-skip-errors start slave
store:nfs(寫權限)+mc(命中率)
分層:
外圍應用程序
命令解釋器 shell
系統核心 kernel lib api
硬件
特點:
支持多用戶 多任務 多進程 多cpu的系統
有完善的網絡服務 http ftp smtp pop samba snmp dns dhcp ssh telnet
有完善的大型數據庫平台 oracle db./2 sybase mysql postgresql
完善的開發平台 java php perl c/c++
虛擬機:
1bridge(虛擬ip) nat(獨立ip) host-only(不能連接外網)
2.磁盤分區:
主分區 擴展分區 邏輯分區
一塊磁盤最多4個主分區 其中一個主分區的位置可以用擴展分區替換,這個擴展分區內可劃分多個邏輯分區,擴展分區必須劃分邏輯分區才能用
分區要求:根分區 100G+ swap 10G+ boot 百兆
遠程連接:
ssh 加密 telnet 未加密
沒連接上:ping ip telnet ip+port iptalbes檢查
securecrt 日志 下載上傳 批量部署
linux 命令: 命令 參數 文件/路徑
啟動服務:sshd syslog network crond systats(iostat mpstat sar)
最小化原則:
系統最小化
啟動服務最小化
命令最小化
用戶權限最小化
目錄權限最小化
權限:
sudo 事先授權
sudo su - root 最大化授權
su -root 另一個root賬戶
其他優化:
調整文件描述符數量 自動清理垃圾文件 內核參數優化 /etc/sysctl.conf 鎖定關鍵系統文件 清空內核版本顯示 清除多余的系統虛擬賬號 為grub引導菜單加密碼
----------------------------------------------------------------------------------------------------------------
web服務:
用戶輸入網 如果ldns沒有那麼 dns解析 找到對應的dns服務器 ip解析記錄發給ldns ldns發給客戶端浏覽器 客戶端訪問資源
http協議原理:
客戶輸入網址 dns解析
浏覽器解析出端口號 並通過url和端口號簡歷tcp連接 而後浏覽器向服務器發送http請求
服務器讀取並返回響應信息 服務器關閉http連接和tcp連接
重點:dns流程
用戶訪問網站
dns解析
建立tcp連接發送http報文
http請求報文
http響應報文
web服務區後端集群處理 nginx fastcgi php mysql
偽靜態:便於收錄 消耗資源
流量:獨立IP PV訪問頁面數 UV獨立訪客(http報文或是cookie)
並發:單位時間能處理的最大連接數 (RPS SBC QPS IOPS)
大型網站 每天—>獨立IP 數十萬 pv上千萬 並發級別 過萬 機器數量幾百台
FASTCGI:
--fastcgi 將http服務器和動態腳本語言通信接口分開
--fastcgi是一個可伸縮 高效地 在http服務器和動態腳本之間通信的接口,采用C/S結構,分為HTTP
服務器和服務端動態解析服務器
--nginx(fastcgi_pas客戶端)發送請求—>php-fpm啟動多個fastcgi守護進程 —>發送給php解析器(php.ini配置)—>發送給mysql請求數據
php服務緩存:
--服務端接受請求
--通過libphp或是php-fpm處理找到php文件加載進內存解析,
--將php源代碼編譯成opcode,
--並執行,執行後丟棄
php緩存解決丟棄問題,即不丟棄opcode,避免二次編譯,直接讀取緩存過的opcode即可
常用:pac accelerate xcache
----------------------------------------------------------------------------------------------------------------
存儲服務:
nfs:可寫權限
rpc記錄每個nfs端口號
有點:快速部署 服務穩定
局限:單點故障 並發低 設計了同步(實時等待)和異步(解耦)的概念
memcache
場景:熱點數據緩存(數據預熱) + session會話共享(速度快 解決共用session,一致性hash使session仍有丟失,cookie解決即可)
特點:協議簡單 異步模型使用libevent作為事件處理機制 kv存儲 全內存緩存 分布式
工作原理:cs sockeyt事件處理 數據存儲是預分配內存(slab lru-get刪除 惰性 hash檢索)
常用參數和狀態查詢 memcache memcached
命中率:後端節點服務器越多,命中率就越低 | 一致性哈希算法 使每台服務器緩存不同數據,並且影響最小,總數量=全部數據量
----------------------------------------------------------------------------------------------------------------
mysql
多實例:1-2個實例居多,48G內存,磁盤 12*300 RAID10 cpu E5210
配置: my.cnf mysql 都是獨立文件,在獨立的文件夾下
/data
3306
my.cnf
mysql
3307
my.cnf
mysql
主從復制:
方式:單向 雙向 級聯(log-slave-update 從binlog也要開) 環狀
作用:備庫 讀寫分離 業務拆分
原理:異步邏輯 三個線程 主開啟binlog server-id不同 binlog記錄修改sql
流程:
主庫鎖表flush table with read lock 備庫只讀 主庫導出mysqldump -x —master-data=1
解鎖主表 unlock tables
備庫讀取和延遲處理 (流程):show master status | change master |start slave |show slave status (slaveIO masterIO SQL線程檢測RelayLog)
主備一致性檢測 主備切換 pt--
主從復制問題:
stop slave
跳過 set global sql_slave_skip_counter=1 or slave-skip-errors
start slave
主從復制問題原因:
從庫太多 從庫比主庫性能低 慢sql 並發大 網絡延遲
授權:讀寫權限分開 從庫 read-only 雙保險
----------------------------------------------------------------------------------------------------------------
nginx
概述:
性能 連接超時和fastcgi gzip expire robot static cdn 並發連接和請求速率
安全 軟件名和版本號 目錄權限 http請求
用戶體驗 錯誤頁面
詳細:
隱藏nginx版本號: server_tokens off
更改源碼隱藏nginx軟件名
更改nginx默認用戶
優化性能:
nginx 進程對應配置 worker_process cpu核數*2
不同nginx綁定不同cpu woker_cpu_affinity 0001 0010 0100 1000
事件處理模型 use epoll
單個進程允許的客戶端最大連接數 woker_connections max_client = worker_process*worker_connections
nginx 最大打開文件數: worker_rlimit_nofile 65535
優化散列表: server_name *.nginx.org | server_names_hash_max_size server_names_hash_bucket_size
高效文件傳輸: send file on tcp_nopush on
連接超時 keepalive_timeout 60 tcp_nodelay on client_header_timeout 15 client_body_timeout 215
send_timeout 15
上傳文件大小限制:client_max_body_size 8m
fastcgi優化參數 buffer 寫入 cache讀取
gzip :純文本最好壓縮
gzip on
gzip_min_length 1k;
gizip_buffers 4 16k
gzip_http_version 1.1
gzip_comp_level 2
gzip_type text/plain
gzip_vary on
expire:
控制http 的 expires cache-control 是否緩存和緩存多久
根據擴展 文件名 單個文件添加expire
location {
expires 7d;
break;
}
日志切割:
crontab+mv
access_log off
deny rewrite allow if條件
防盜鏈:refer cookie 加密(路徑和時間戳)
防爬蟲: $http_user_agent
方法:$request_method
CDN加速: dns解析到服務商 (藍汛 快網 網宿)
頁面跳轉:error_page 403 404 ...
服務優化:頁面 附件下載 圖片上傳 獨立出來
服務降權,在每個用戶文件夾內設計用戶,不必root重啟
控制並發:limit_conn_zone limit_zone
請求速率: limit_req_zone key zone=name:size rate=rate
負載均衡轉發
方法:location user_agent ext_name ...
說明:
lvs請求是轉發數據包,tcp層
nginx反向代理是轉發請求 http層
配置:
upstream static_pools{
server 10.0.0.9:80 wieght=1;
server 10.0.0.10:80 weight=1;
}
upstream upload_pools{
server 10.0.1.9:80 wieght=1;
server 10.0.1.10:80 weight=1;
}
upstream default_pools{
server 10.0.2.9:80 wieght=1;
server 10.0.2.10:80 weight=1;
}
server{
listen 80;
server_name www.etiantian.org;
location /staic/ {
proxy_passhttp://staic_pools; include proxy.conf;
}
location /upload/ {
proxy_passhttp://upload_pools; include proxy.conf;
}
location/{
proxy_passhttp://default_pools; include proxy.conf;
}
}
proxy.conf:
proxy_set_header Host $host; //代理向後端轉發http請求頭部加入host字段信息 識別代理的哪個虛擬主機
proxy_set_header X-Forwarded-For $remote_addr; //記錄用戶真實IP,而不是代理服務器IP
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffer 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
核心參數:
1.ngx_http_proxy_module 代理
proxy_set_header
client_body_buffer_size
proxy_connect_timeout
pxoy_send_timeout
proxy_read_timeout
proxy_buffer_size
proxy_buffers
proxy_busy_buffers_size
proxy_temp_file_write_size
2.ngx_http_upstream_module 負載均衡
參數:server weight max_files backup fail_timeout down
算法:靜態 權重 哈希 | 動態 連接時間 一致性哈希
健康狀態:
nginx_upstream_check_module(健康監測)
proxy_next_upstream(狀態監測)
Copyright © Linux教程網 All Rights Reserved