iT邦幫忙

0

Windows 跑PHP&Mysql

大家好:
目前公司架設Moodle (php+mysql)
該程式會有大量的碎資料 叫MoodleData 上課PPT 考試圖案(數學方程式)
但是最近效能不彰,天天被釘在牆上。
程式是Opensource 他們會不定期的有更新版本
所以從改程式下手可能會時常需要改,因為他不是跑Stored Procedure
會想從架構及硬體面先下手

目前環境: hp proliant dl580 g7
OS: Vm ESXI 6.0
CPU: Xeon X7542 兩顆
RAM: 40GB
HDD: 300GB 10K x7 Raid5 + Hotswap 1 (Total 8)

WEB
CPU: 12 core
RAM: 16GB
WAMP Server PHP5.6

DB
CPU: 4 core
RAM: 8GB
MYSQL Community

歷史介紹:
(沒上VM)
以前是Centos 掛載 Windows Server NFS分享Moodle Data(先人做的)
但是被反應 考試的時候抓資料很慢
然後這樣的掛載方式常常出問題不太穩定

後來我改成 Centos DB+WEB同一台
但是同仁反映 操作上不如Windows順 複製資料等
備份主機也對Linux相容性不佳

到現在的架構(全上VM)Server 2016是有大量授權的,所以授權不是問題。

目前問題:

DB:
經過我一個月觀察DB越來越慢,線上才兩個人點東西(要從DB拉)就要五秒
CPU都在10~50%內 RAM也都在4GB內
網路上有很多文章說 Mysql裝在 Linux可能會比較快之類的
但不知道改MSSQL會不會效能更好?
在能力範圍內 能調的參數 Buffer Cache等 都開很大了(依照phpmyadmin給的建議)

**我想問:**是因為DB裝在Windows所以效能差 還是單純硬碟RAID5應該改為0+1?
不知道其他公司都怎麼做?
這確實沒有好好規劃,希望能做些改善

WEB不知道是否也有影響
目前是用wamp server(www.wampserver.com)跑
有Loading比較小的網站在其他主機上也是這樣跑 目前沒遇到問題
如果換成Server 2016內建的 IIS10 跑PHP會不會比較好?
平均使用人數:1-30人
尖峰使用人數:50-200

資料量:
一年會有兩千門課
每一門課 若有一個線上考試 每一次考試有50題
作答一次就50筆資料
50人做 就有2500筆
10組人做就有25,000
目前DB有17.8GB 104年迄今約(一年半)

Switch 都是Cisco 1GBS 搭N3k
中華電信 固定IP 雙向100MB 五條 + LoadBalance (MHG3500)
條例順序 前面三條是 DENY PORT &惡意網站&內部不允許上網的網站
僅在DNS後面而已第四條

目前也有要邊預算要改善這問題
不知道從何編起,怕編了沒什麼改善就慘了

2017/09/30 更新:
感謝各位的指教,因為各位的題點,我發現是硬碟或RAID問題。
Image

跟其他VM比較之下,這真是慢的誇張

看更多先前的討論...收起先前的討論...
小魚 iT邦好手 1 級 ‧ 2017-09-28 12:39:58 檢舉
才200人而已,
抓資料很慢應該要檢討的是自己寫的程式或SQL語法吧...
Kevin iT邦新手 4 級 ‧ 2017-09-28 13:27:08 檢舉
程式是Opensource 他們會不定期的有更新版本
另外資料量很大
每一個題庫有50題 作答一次就50筆資料
50人做 就有2500筆
10組人做就有25,000
所以資料增長也很恐怖的
想先從架構面下手 謝謝您的指教
q00153 iT邦新手 4 級 ‧ 2017-09-28 17:10:16 檢舉
其實 25000 筆資料非常少量.....
以前做工廠的生產資料一天都幾十萬~百萬筆的
也是操 MySql,系統還是 Win7 呢
而且還是一般文書機的規格電腦
所以你基本可以排除規格的問題
(如果是硬體問題則例外 Ex. 硬碟快掛了...)

依照您的描述來看
問題是出在 SQL 的可能性很大
可以在資料庫尖峰時 (卡卡的時候) 用 show processlist 指令
看看是哪些 SQL 語法佔用資源
從那裏去下手

我還看過有人寫無窮迴圈在跑同一條 SQL 語法的....
那個 CPU 都吃到 100%
硬體再怎樣高級都沒用
q00153 iT邦新手 4 級 ‧ 2017-09-28 17:14:20 檢舉
對了,不建議以 IIS 來使用 PHP,以前測試過很不穩定....雖然現在不知道如何
也不建議將 MySQL 改成 MsSQL 先不說效能會不會有差別的可能,光是語法跟相容性就會搞死人了
fillano iT邦超人 1 級 ‧ 2017-09-29 10:14:50 檢舉
如果可以跑PHP7,那盡量跑PHP7,而且要開OPCache(或是其他家的OP Cache)。很多年沒碰Moodle,不過印象中Moodle是透過PHP程式去讀取課件的靜態檔案,不是讓伺服器直接管理靜態檔案,所以PHP執行的效率也會有影響。
fillano iT邦超人 1 級 ‧ 2017-09-29 10:18:21 檢舉
IIS跑PHP我是覺得還好,PHP Manager很方便,用Web Platform Installer裝一裝該有的就有。架構上是用FastCGI,分工也很清楚。
wiseguy iT邦超人 1 級 ‧ 2017-09-30 14:24:10 檢舉
依你的硬體規格,200人全上,應該也還游刃有餘才對。
1. 請把 MySQL 的 my.cnf 貼出來。
2. 請把 apache 的 httpd.conf 貼出來。
3. 請在 DOS 視窗下,執行 php.exe -m,將出現的列表貼出來,看看執行了什麼模組
wiseguy iT邦超人 1 級 ‧ 2017-09-30 14:25:15 檢舉
對了,如果 apache 的 error.log 會一直長大,請把裡面常發生的問題也貼上來
Kevin iT邦新手 4 級 ‧ 2017-09-30 21:45:24 檢舉
大家好:
感謝各位回應,依照q00153所給的提示 硬碟快掛。
我今天到機房看,硬碟並沒有亮紅燈,VM也沒偵測到問題。

廠商有跟我建議要換SSD大家也知道買了要是沒變好真的會被罵死。

目前在煩惱硬碟跟RAID哪裡有問題....

1 個回答

0
海綿寶寶
iT邦超人 1 級 ‧ 2017-09-28 14:22:26

參考看看官網效能文件

我要發表回答

立即登入回答