Linux學習筆記11 linux系統日常管理 wireshark工具 Linux系統的任務計劃 RHELCentOS 7x的幾點新改變 CURL常用命令 LAMP環境搭建 安裝mysql 安裝Apache 安裝MD5驗證文件 Apache安裝擴展模塊 - mod_status 安裝php 獲取php PHP擴展模塊安裝 - memcache 常用的技巧 LNMP環境搭建 安裝nginx 啟動出現錯誤Job for nginxservice failed because the control 訪問一直出現502錯誤 常用的MySQL操作 MySQL備份 MySQL恢復 NFS服務配置 CentOS 7 安裝配置 NFS 系統啟動完成之後運行腳本 MySQL調優 MySQL調整幾個關鍵的buffer和cache和其他參數調整
安裝: yum install -y wireshark
使用命令:
tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
crontab
PS:可以用vim /etc/crontab查看編輯配置信息。
選項:
>-u :指定某個用戶,不加-u選項則為當前用戶
-e :制定計劃任務;
-l :列出計劃任務;
-r :刪除計劃任務。
例:制定計劃任務
crontab -e打開配置文件
在彈出的輸入框中輸入56 18 6 4 3 touch c.txt
PS:該句的意思是:在4月6號(星期三)的18點56分創建一個c.txt文件,可以用*代替時間字段,代表任意一個,比如第一個字段為*,則代表任意(每)一分鐘。
PS:* * * * * user-name command從左到右,依次為:分,時,日,月,周,用戶,命令行。用戶是可以省略的,省略的話,代表當前用戶。
PS:crontab -e 實際上是打開了 /var/spool/cron/username (如果是root則打開的是/var/spool/cron/root)這個文件。使用的是vim編輯器,所以要保存的話則在命令模式下輸入:wq即可。但是,千萬不要直接去編輯那個文件,因為可能會出錯,所以一定要使用 crontab -e 來編輯。查看已經設定的任務計劃使用 crontab -l 命令,刪除計劃任務用crontab -r,也可以用crontab -e -u 用戶名來編輯指定用戶的計劃任務。當然查看和刪除也能指定用戶的。
設置好了所有的計劃任務後需要查看一下crond服務是否啟動: service crond status,如果是關閉狀態,則需要啟動:service crond start。
案例:
問題:
每天凌晨1點20分清除/var/log/slow.log這個文件
每周日3點執行 “/bin/sh /usr/local/sbin/backup.sh”
每月14號4點10分執行 “/bin/sh /usr/local/sbin/backup_month.sh”
每隔8小時執行 “ntpdate time.windows.com”
每天的1點,12點,18點執行 “/bin/sh /usr/local/sbin/test.sh”
每天的9點到18點執行 “/bin/sh /usr/local/sbin/test2.sh”答案:
20 1 * * * echo "" > /var/log/slow.log
0 3 * * 0 /bin/sh /usr/local/sbin/backup.sh
10 4 14 * * /bin/sh /usr/local/sbin/backup_month.sh
0 */8 * * * nepdate time.windows.com
0 1,12,18 * * * /bin/sh /usr/local/sbin/test.sh
0 9-18 * * * /bin/sh /usr/local/sbin/test2.sh
wget http://cdn.mysql.com/archives/mysql-5.1/mysql-5.1.30-linux-x86_64-icc-glibc23.tar.gz
Linux下安裝mysql時報錯libstdc++.so.5: cannot open shared object file: No such file or directory
使用yum install -y compat-libstdc++-33安裝支持。
yum install -y isomd5sum
/usr/local/apache2/bin/apachectl -l 有mod_so.c
進入模塊目錄:
cd /usr/local/src/httpd-2.2.24/modules/generators/
安裝模塊:
/usr/local/apache2/bin/apxs -i -a -c -n mod_status mod_status.c
vim /usr/local/apache2/conf/httpd.conf
進入目錄cd /usr/local/src
下載文件wget http://cn2.php.net/distributions/php-5.5.34.tar.gz
wget http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz
tar zxvf memcache-2.2.3.tgz
cd memcache-2.2.3
yum install -y autoconf
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
vim /usr/local/php/etc/php.ini
PS:這個模塊安裝,在php7中會提示致命錯誤:ext/standard/php_smart_str.h:沒有那個文件或目錄,這應該是版本兼容性問題,如果要安裝建議使用老版本的PHP。
查看apache編譯參數 cat /usr/local/apache2/build/config.nice
查看apache加載的模塊 /usr/local/apache2/bin/apachectl -M
測試apache配置文件是否正確 /usr/local/apache2/bin/apachectl -t
更改配置文件後,重新加載/usr/local/apache2/bin/apachectl graceful
查看mysql編譯參數 cat /usr/local/mysql/bin/mysqlbug|grep configure
查看php編譯參數 /usr/local/php/bin/php -i |head
查看php加載模塊 /usr/local/php/bin/php -m
查看php.ini在哪裡 /usr/local/php/bin/php -i |grep 'Configuration File'
查看extension_dir路徑 /usr/local/php/bin/php -i |grep 'extension_dir'
原因是Apache和nginx監聽同一個端口有沖突。可以選擇停掉Apache或者是更改nginx監聽端口。
[root@switch nginx-1.4.4]# /usr/local/apache2/bin/apachectl stop
[root@switch nginx-1.4.4]# netstat -lnp |grep httpd
[root@switch nginx-1.4.4]# /etc/init.d/nginx start
Starting nginx (via systemctl): [ 確定 ]
[root@switch nginx-1.4.4]#PS:這裡提供的是第一種方式。
PS:這個問題,找了許久沒解決,以後再說。
PS:後面查找錯誤日志vim /usr/local/nginx/logs/nginx_error.log找到如下錯誤
2016/04/08 19:27:18 [crit] 887#0: *1 connect() to unix:/tmp/php-fcgi.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /2.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-fcgi.sock:", host: "localhost"
核心也就connect() to unix:/tmp/php-fcgi.sock failed (13: Permission denied)這段。
然後查找發現是/tmp/php-fcgi.sock這個文件權限有問題,附上修改記錄:
[root@localhost Desktop]# curl localhost/2.php
mysqldump -u root -p'密碼' -h '主機地址' -P'端口號' --default-character=字符集 數據庫名 > /tmp/mysql.sql
PS:遠程備份需要-h``-P選項,可以指定默認字符集。
mysql -u root -p'密碼' --default-character=字符集 數據庫名
http://www.apelearn.com/study_v2/chapter20.html#nfs
http://www.linuxidc.com/Linux/2015-05/117378.htm
vim /etc/rc.local
PS:可以將一些需要隨開機就運行的命令添加到這個文件中。
架構層:做從庫,實現讀寫分離
系統層次:增加內存;給磁盤做raid0或者raid5以增加磁盤的讀寫速度;可以重新掛載磁盤,並加上noatime參數,這樣可以減少磁盤的i/o;
MySQL本身調優: (1) 如果未配置主從同步,可以把log-bin功能關閉,減少磁盤i/o (2) 在my.cnf中加上skip-name-resolve,這樣可以避免由於解析主機名延遲造成mysql執行慢 (3) 調整幾個關鍵的buffer和cache。調整的依據,主要根據數據庫的狀態來調試。應用層次:查看慢查詢日志,根據慢查詢日志優化程序中的SQL語句,比如增加索引
內容: 1) key_buffer_size 首先可以根據系統的內存大小設定它,大概的一個參考值:1G以下內存設定128M;2G/256M; 4G/384M;8G/1024M;16G/2048M.這個值可以通過檢查狀態值Key_read_requests和 Key_reads,可以知道key_buffer_size設置是否合理。比例key_reads / key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用SHOW STATUS LIKE ‘key_read%’獲得)。注意:該參數值設置的過大反而會是服務器整體效率降低! 2) table_open_cache 打開一個表的時候,會臨時把表裡面的數據放到這部分內存中,一般設置成1024就夠了,它的大小我們可以通過這樣的方法來衡量: 如果你發現 open_tables等於table_cache,並且opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用SHOW STATUS LIKE ‘Open%tables’獲得)。注意,不能盲目地把table_cache設置成很大的值。如果設置得太高,可能會造成文件描述符不足,從而造成性能不穩定或者連接失敗。 3) sort_buffer_size 查詢排序時所能使用的緩沖區大小,該參數對應的分配內存是每連接獨占!如果有100個連接,那麼實際分配的總共排序緩沖區大小為100 × 4 = 400MB。所以,對於內存在4GB左右的服務器推薦設置為4-8M。 4) read_buffer_size 順序讀取查詢操作所能使用的緩沖區大小。和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享! 5) join_buffer_size 聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享! 6) myisam_sort_buffer_size 這個緩沖區主要用於修復表過程中排序索引使用的內存或者是建立索引時排序索引用到的內存大小,一般4G內存給64M即可。 7) query_cache_size MySQL查詢操作緩沖區的大小,通過以下做法調整:SHOW STATUS LIKE ‘Qcache%’如果Qcache_lowmem_prunes該參數記錄有多少條查詢因為內存不足而被移除出查詢緩存。通過這個值,用戶可以適當的調整緩存大小。如果該值非常大,則表明經常出現緩沖不夠的情況,需要增加緩存大小;Qcache_free_memory:查詢緩存的內存大小,通過這個參數可以很清晰的知道當前系統的查詢內存是否夠用,是多了,還是不夠用,我們可以根據實際情況做出調整。一般情況下4G內存設置64M足夠了。 8) thread_cache_size 表示可以重新利用保存在緩存中線程的數,參考如下值:1G —> 8 2G —> 16 3G —> 32 >4G —> 64 9) thread_concurrency 這個值設置為cpu核數的2倍即可 10) wait_timeout 表示空閒的連接超時時間,默認是28800s,這個參數是和interactive_timeout一起使用的,也就是說要想讓該參數生效,必須同時設置interactive_timeout,建議他們兩個都設置為10 11) max_connect_errors 是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的情況。與性能並無太大關系。為了避免一些錯誤我們一般都設置比較大,比如說10000 12) max_connections 最大的連接數,根據業務請求量適當調整,設置500足夠 13) max_user_connections 是指同一個賬號能夠同時連接到mysql服務的最大連接數。設置為0表示不限制。通常我們設置為100足夠