① 如何使用php實時監控linux伺服器的cpu,內存,硬碟信息
1,Linux下可以在/proc/cpuinfo中看到每個cpu的詳細信息。但是對於雙核的cpu,在cpuinfo中會看到兩個cpu。常常會讓人誤以為是兩個單核的cpu。
其實應該通過Physical
Processor
ID來區分單核和雙核。而Physical
Processor
ID可以從cpuinfo或者dmesg中找到.
flags
如果有
ht
說明
支持超線程技術
判斷物理CPU的個數可以查看physical
id
的值,相同則為同一個物理CPU
2,查看內存大小:
cat
/proc/meminfo
|grep
MemTotal
3,其他一些可以查看詳細
linux系統
信息的命令和方法:
uname
-a
#
查看內核/操作系統/
CPU信息
的linux系統信息命令
head
-n
1
/etc/issue
#
查看操作系統版本,是數字1不是字母L
cat
/proc/cpuinfo
#
查看CPU信息的linux系統信息命令
hostname
#
查看計算機名的linux系統信息命令
lspci
-tv
#
列出所有
PCI設備
lsusb
-tv
#
列出所有USB設備的linux系統信息命令
lsmod
#
列出載入的內核模塊
env
#
查看
環境變數
資源
free
-m
#
查看內存使用量和
交換區
使用量
df
-h
#
查看各分區使用情況
-sh
#
查看指定目錄的大小
grep
MemTotal
/proc/meminfo
#
查看內存總量
grep
MemFree
/proc/meminfo
#
查看空閑內存量
uptime
#
查看系統
運行時間
、用戶數、負載
cat
/proc/loadavg
#
查看系統負載磁碟和分區
mount
|
column
-t
#
查看掛接的分區狀態
fdisk
-l
#
查看所有分區
swapon
-s
#
查看所有
交換分區
hdparm
-i
/dev/hda
#
查看磁碟參數(僅適用於
IDE設備
)
dmesg
|
grep
IDE
#
查看啟動時IDE設備檢測狀況網路
ifconfig
#
查看所有網路介面的屬性
iptables
-L
#
查看防火牆設置
route
-n
#
查看
路由表
netstat
-lntp
#
查看所有監聽埠
netstat
-antp
#
查看所有已經建立的連接
netstat
-s
#
查看
網路統計
信息進程
ps
-ef
#
查看所有進程
top
#
實時顯示
進程狀態
用戶
w
#
查看活動用戶
id
#
查看指定用戶信息
last
#
查看
用戶登錄
日誌
cut
-d:
-f1
/etc/passwd
#
查看系統所有用戶
cut
-d:
-f1
/etc/group
#
查看系統所有組
crontab
-l
#
查看當前用戶的計劃任務服務
chkconfig
–list
#
列出所有系統服務
chkconfig
–list
|
grep
on
#
列出所有啟動的系統服務程序
rpm
-qa
#
查看所有安裝的軟體包
cat
/proc/cpuinfo
:查看CPU相關參數的linux系統命令
cat
/proc/partitions
:查看linux硬碟和分區信息的系統信息命令
cat
/proc/meminfo
:查看linux系統內存信息的linux系統命令
cat
/proc/version
:查看版本,類似uname
-r
cat
/proc/ioports
:查看設備io埠
cat
/proc/interrupts
:查看中斷
cat
/proc/pci
:查看pci設備的信息
cat
/proc/swaps
:查看所有swap分區的信息
② 誰動了我的內存之PHP內存溢出
你看看你的程序裡面有沒有用到遞歸,或者有沒有死循環。
另外解決此類問題的主要思想就是分而治之
我覺得是foreach的機制的問題
foreach($arr as $key=>$value){}這裡面的$value是每次循環是把數組中元素的值賦值給$value
而foreach($arr as $key=>&$value){}這里的$value是引用賦值。
兩者有什麼區別呢?帶引用的$value可以$value='aaa';直接改變元素的值;還有一個重要的,就是最後一次循環之後$value的值還會保留;
你這里是foreach($obj as $value){}對象默認是引用傳值;所以循環過後要unset($obj);
php里還有一個函數clearstatcache(true)清楚文件狀態緩存,雖然受影響的函數沒有simplexml_load_file(),不過還是可以試試;
還有mysql系列的函數很多也不是很穩定,有時候不知道會出什麼問題;建議用PDO;
深感php裡面的坑太多了,稍不注意就跳進去了。
③ 求助:PHP內存溢出問題Fatal error:Out of memory
死循環或者輸出的數據過大都會導致內存溢出,n在PHP.ini有對內存設置
④ php 執行mysql中查詢時內存溢出怎麼辦
不要一次性從資料庫中讀出所有數據,例如使用原生PDO時,不要使用$db->query($sql)->fetchAll(); 方法,題主使用的ThinkPHP框架中,不要使用ORM模型的select()方法
⑤ php 執行mysql中查詢時內存溢出怎麼辦
使用mysql_unbuffered_query(), 可以避免內存的立即佔用, 如果返回的結果存放到array中也是完全沒有問題的, 也不會出現php查詢mysql數據量過大時導致內存溢出問題.
這種情況一般會在單表數據表資料庫比較大的時候出現,建議在使用的過程中限制單次讀取數據條數,或者對數據表進行分表
⑥ 如何使用PHP實時監控Linux伺服器的cpu,內存,硬碟信息
1,Linux下可以在/proc/cpuinfo中看到每個cpu的詳細信息。但是對於雙核的cpu,在cpuinfo中會看到兩個cpu。常常會讓人誤以為是兩個單核的cpu。
其實應該通過Physical Processor ID來區分單核和雙核。而Physical Processor ID可以從cpuinfo或者dmesg中找到. flags 如果有 ht 說明支持超線程技術 判斷物理CPU的個數可以查看physical id 的值,相同則為同一個物理CPU
2,查看內存大小:
cat /proc/meminfo |grep MemTotal
3,其他一些可以查看詳細linux系統信息的命令和方法:
uname -a # 查看內核/操作系統/CPU信息的linux系統信息命令
head -n 1 /etc/issue # 查看操作系統版本,是數字1不是字母L
cat /proc/cpuinfo # 查看CPU信息的linux系統信息命令
hostname # 查看計算機名的linux系統信息命令
lspci -tv # 列出所有PCI設備
lsusb -tv # 列出所有USB設備的linux系統信息命令
lsmod # 列出載入的內核模塊
env # 查看環境變數資源
free -m # 查看內存使用量和交換區使用量
df -h # 查看各分區使用情況
-sh # 查看指定目錄的大小
grep MemTotal /proc/meminfo # 查看內存總量
grep MemFree /proc/meminfo # 查看空閑內存量
uptime # 查看系統運行時間、用戶數、負載
cat /proc/loadavg # 查看系統負載磁碟和分區
mount | column -t # 查看掛接的分區狀態
fdisk -l # 查看所有分區
swapon -s # 查看所有交換分區
hdparm -i /dev/hda # 查看磁碟參數(僅適用於IDE設備)
dmesg | grep IDE # 查看啟動時IDE設備檢測狀況網路
ifconfig # 查看所有網路介面的屬性
iptables -L # 查看防火牆設置
route -n # 查看路由表
netstat -lntp # 查看所有監聽埠
netstat -antp # 查看所有已經建立的連接
netstat -s # 查看網路統計信息進程
ps -ef # 查看所有進程
top # 實時顯示進程狀態用戶
w # 查看活動用戶
id # 查看指定用戶信息
last # 查看用戶登錄日誌
cut -d: -f1 /etc/passwd # 查看系統所有用戶
cut -d: -f1 /etc/group # 查看系統所有組
crontab -l # 查看當前用戶的計劃任務服務
chkconfig –list # 列出所有系統服務
chkconfig –list | grep on # 列出所有啟動的系統服務程序
rpm -qa # 查看所有安裝的軟體包
cat /proc/cpuinfo :查看CPU相關參數的linux系統命令
cat /proc/partitions :查看linux硬碟和分區信息的系統信息命令
cat /proc/meminfo :查看linux系統內存信息的linux系統命令
cat /proc/version :查看版本,類似uname -r
cat /proc/ioports :查看設備io埠
cat /proc/interrupts :查看中斷
cat /proc/pci :查看pci設備的信息
cat /proc/swaps :查看所有swap分區的信息
⑦ PHP程序,如何監控內存情況
看到有人寫透視寶做php監控的原理圖,跟你分享下。我估計大家做的方式都是差不多。
PHP運行支撐的ZendEngine早在設計過程中已經預留了豐富的Hook,可以有效干涉處理過程中的幾個關鍵步驟。利用了以下幾個Hook,就能方便的獲取數據:
1. zend_compile_file & zend_compile_string
載入分析文件或字元串,本身就會造成非常大的IO,如果過多地執行載入,無疑會造成內存和CPU的消耗.通過這兩個hook,可以取得文件名、執行行數、使用內存和CPU佔用時間。
2.zend_execute & zend_execute_internal
通過這兩個hook的使用,我們可以准確地分析得出一個PHP應用中的類調用、方法調用、方法參數、內存佔用和CPU佔用,加以分析,便可以准確得出應用系統運行過程中的方法運行棧,API調用地址,SQL語句,CacheKey以及Cache命中等關鍵信息。
3.zend_throw_exception_hook
利用異常鉤子,可以准確地得到應用系統運行過程中出現的異常信息,當然包括異常發生的類方法位置,參數,異常code和異常message。
4.zend_error_cb
錯誤鉤子則更加直接,可以准確得到系統運行過程中出現的任何一個warning,代碼錯誤或語法錯誤。
⑧ PHP 斷點上傳超大文件,合並文件時內存溢出,怎麼處理
後台腳本佔用的內存是有個上限的,不是你想用多少就有多少的。
你把文件數據用追加的方式寫入文件,而不是把所有數據拼接為字元串再一次性寫入文件,就不會造成內存溢出了:
file_put_contents('文件路徑', '要寫入的數據', FILE_APPEND);
⑨ php 大數據處理內存溢出
redis能不能有效要看程序能否優化
確實需要佔用大量內存的話 建議不常用的數據使用硬碟存儲