
ã¯ããã«
ãã®ãã³ãã«ã®æé©åã«é¢ãã以åã®èšäºãæžããŠããããªãã®æéãçµã¡ãŸããã 512 MBã®ã¡ã¢ãªãåããPentium 4ã¯ããã©ãŒã©ã ã§æ倧1,000人ããã©ãã«ãŒã§æ倧150,000人ã®ãã¢ã«ãµãŒãã¹ãæäŸããŠããŸãããé·ãéãã€ãèªã®ã¹ã¬ããããã³ããããã³ã¯ã©ããè€æ°ã®ãµãŒããŒã«çœ®ãæãããŸããã ãã®äžã§è¿°ã¹ãããŠããããšã¯ãã¹ãŠé¢é£æ§ããããŸãããè¿œå ãã䟡å€ããããã®ããããŸãã
èšäºã¯å€§ãããããè«çãããã¯ã«åå²ãããŸãã
0.äœããæé©åããå¿ èŠãããã®ã¯ãªãã§ããïŒ 1. OSæé©åïŒFreeBSDïŒ 1.1 7.xãžã®ç§»è¡ 1.2 7.2ãžã®ç§»è¡ 1.3 amd64ãžã®ã¢ããã°ã¬ãŒã 1.4ãããã¯ãŒã¯ãµãã·ã¹ãã ã®ã¢ã³ããŒã 1.5 FreeBSDãšå€æ°ã®ãã¡ã€ã« 1.6ãœããã¢ããããŒããgjournalããã³ããŠã³ããªãã·ã§ã³ 2.ããã³ããšã³ãã®æé©åïŒnginxïŒ 2.1ãã£ã«ã¿ãåãå ¥ãã 2.2ãã£ãã·ã¥ 2.3 AIO 3.ããã¯ãšã³ãã®æé©å 3.1 APC 3.1.1 APCãã㯠3.1.2 APCãã³ã 3.1.3 APCãã©ã°ã¡ã³ããŒã·ã§ã³ 3.2 PHP 5.3 4.ããŒã¿ããŒã¹ã®æé©å 4.1 MySQL 4.1.1 5.1ãžã®ç§»è¡ 4.1.2 InnoDBãžã®ç§»è¡ 4.1.3 MySQLãã«ãã€ã³ãã£ãã·ã¥-ã¯ãšãªãã£ãã·ã¥ 4.1.4ã€ã³ããã¯ã¹ 4.2 PostgreSQL 4.2.1ã€ã³ããã¯ã¹ 4.2.2 pgBouncerãªã©ã 4.2.3 pgFouine 4.3ããŒã¿ããŒã¹ã®ã¢ã³ããŒã 4.3.1 SphinxQL 4.3.2éRDBMSã¹ãã¬ãŒãž 4.4ãšã³ã³ãŒãã£ã³ã° 4.5éåæ ã¢ããªã±ãŒã·ã§ã³ã ããããªããšã 1. SSHGuardãŸãã¯ä»£æ¿ã 2. xtrabackup 3.ã¡ãŒã«ãå¥ã®ãã¹ãã«è»¢éãã 4.ãµãŒãããŒãã£ãœãããŠã§ã¢ãšã®çµ±å 5.ã¢ãã¿ãªã³ã° 6.çæã®æé©å
0.äœããæé©åããå¿ èŠãããã®ã¯ãªãã§ããïŒ
äžè¬çã«ãããªãã¯æé·ã§ããŸãïŒ
- ã¹ã±ãŒã«ã¢ãã
- ã¹ã±ãŒã«ã¢ãŠãïŒäžéå±€ã®ããã³ããšã³ã/è»ã®æ°ãå¢ããïŒ
- æé©å
æåã®ãªãã·ã§ã³ã¯å€é¡ã®è³éãããå Žåã«äœ¿çšãã2çªç®ã®ãªãã·ã§ã³ã¯åªããã¢ãŒããã¯ãã£ãŒã«äœ¿çšããæ¹ãé©åã§ãã ããŠãç§ã説æãã3çªç®ã®ãã®ã¯ã1çªç®ã2çªç®ããªããšãã«äœ¿çšãããŸãããå©çšå¯èœãªéããæ倧ãçµãåºããããšæããŸãã
1. OSæé©åïŒFreeBSDïŒ
1.1 7.xãžã®ç§»è¡
FreeBSDã®æ°ããããŒãžã§ã³ã«ã¢ããã°ã¬ãŒããããšäœãåŸãããŸããïŒ
ç§ã«ãšã£ãŠãæãéèŠãªããšã¯æ¬¡ã®ãšããã§ãã
æ°ããULE 3.0ã¹ã±ãžã¥ãŒã©ãšjemalloc㯠ããã«ãã³ã¢ïŒ> = 4ïŒã·ã¹ãã ã§éåžžã«äŸ¿å©ã§ãã
MSIïŒMessage Signaled InterruptsïŒ -ãã©ã€ããŒã§ã¯ããã°ãã°é«éå²ã蟌ã¿ãšãåŒã°ããŸãã
ãããã£ãŠãè² è·ãããã£ãŠæ²ããå§ããåŸæ¥ã®6.xã·ã¹ãã ãããå Žåã¯ã7.xã«ç§»è¡ãã䟡å€ããããŸãã
1.2 7.2ãžã®ç§»è¡
ã¹ãŒããŒããŒãž ãæ¡åŒµKVAãæé©åãããããã©ã«ãsysctl'iã ææ°ã®OSãªãªãŒã¹ã«ã¢ã¯ã»ã¹ããã ãã§ãããããã¹ãŠãå®å šã«ç¡æã§å©çšã§ããŸãã
é²æ©ãæ¢ãŸã£ãŠããã ãçŸåšFreeBSD 8.0ã®ãªãªãŒã¹æºåãæŽããããã©ãŒãã³ã¹ã®ãããªãåäžãçŽæãããŠããŸãã å®å®æ§ã®èšŒæ ãšããŠã www.FreeBSD.orgã¯åæã®ããŒã¿æ代ã«FreeBSD-CURRENTã«ç§»è¡ãããŸããã ãããã£ãŠãã¹ããŒãžã³ã°ãã·ã³ã§ã¯ããã§ã«ãã©ã€ããéå§ã§ããŸãã
1.3 amd64ãžã®ã¢ããã°ã¬ãŒã
amd64ã«åãæ¿ãããšã 巚倧ãªãµã€ãºã®KVAãšShared Mem> 2Gbãè¿œå ãããŸãã ããããããã¯æãéèŠãªããšãšã¯ã»ã©é ã...
2009幎ã«ã¯æ¢ã«ã©ãããããã«4 GBã®ã¡ã¢ãªãæèŒããŠãããããŒã¿ããŒã¹ãåãããµãŒããŒã«ããã»ã©å€ãã®ã¡ã¢ãªãæèŒããã®ã¯ã°ãããŠããããšã«æ³šæããŠãã ããã ãã¡ãããããã¯å°ããªããŒã¿ããŒã¹ã§ã¯æ£åžžã§ãããæé·ããŠã¡ã¢ãªã«åãŸããªããªã£ãå Žåã¯ã©ãããã°ããã§ããïŒ PAEã¯å¥ã®ã°ãªããã§ãããããããå€ãã®ã¡ã¢ãªãæäŸããC i386 OSã«ã¯åé¡ããããŸãã ã¯ããINT64ã¯é·ãé䜿çšãããŠããŠãããããŒã¿ããŒã¹ãOpenSSLãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããŸãã ïŒèª°ããé©åãªãã³ãããŒã¯ã*** SQL i686 vs amd64ããžã®ãªã³ã¯ãæã£ãŠããå Žå-ã³ã¡ã³ããæããŠãã ããïŒã
1.4ãããã¯ãŒã¯ãµãã·ã¹ãã ã®ã¢ã³ããŒã
ããFreeBSDã§ã¯ãããã¯åãªããã£ãŒã«ãã§ã¯ãªããå šäœã®ãã¹ãå Žã§ãã
ãã¹ãŠã®æé©åã¯ã
ifconfig
ãã©ã¡ãŒã¿ãŒã®ãã¥ãŒãã³ã°ãš
sysctl.conf/loader.conf
2ã€ã®éšåã«åããããšãã§ããŸãããã®é åºã§è¡ããŸãããã
æåã«ããããã¯ãŒã¯ã«ãŒãã®æ©èœã確èªããå¿ èŠããããŸããããã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã
ïŒifconfig -m æ©èœ= 399b <RXCSUMãTXCSUMãVLAN_MTUãVLAN_HWTAGGINGãVLAN_HWCSUMãTSO4ãWOL_UCASTãWOL_MCASTãWOL_MAGIC>
ã¯ã©ã¹emïŒIntel GigabitïŒ/ bgeïŒBroadcom GigabitïŒã®åªãããããã¯ãŒã¯ã«ãŒããããå Žåã¯ãifconfigãªãã·ã§ã³ãè©Šãããšãã§ããŸãã
-
tso
ïŒtso4
ãtso6
ïŒ-TCP Segent Offloading -
lro
倧èŠæš¡ãªåä¿¡ãªãããŒã -
txcsum
ãrxcsum
-RX / TXãã§ãã¯ãµã ãªãããŒã -
link0
ãlink0
ãlink2
ãã©ã€ããŒã«äŸåããããããã®ã³ãŒãã確èªããå¿ èŠããããŸãã æé©åãå«ãŸããŠããå Žåãããã°ãã®ã¬ããããªã³ã¯ã§ãããã¯ãŒã¯ã«ãŒããåã«MASTERã«åãæ¿ããå ŽåããããŸãã
ãŸãã
em
ãããã¯ãŒã¯ã«ãŒããšãã«ãã³ã¢procã§ã¯ã Yandexã®ãã©ã€ããŒãè©Šãããšãã§ããŸããããã¯ãããã€ãã®ã¹ããªãŒã ã§ãã±ãããåŠçããŸãã ãŸãããããã¯ãŒã¯ãµãã·ã¹ãã ã®èª¿æŽã«é¢ããå€ãã®ããšã¯nag.ruã§èªãããšãã§ããŸãã
ãµãŒãã¬ãŒãã®
re/rl/sk/nfe
ïŒ
re/rl/sk/nfe
...ïŒã䜿çšããŠããå Žåãäžèšã®ãªãã·ã§ã³ãæ£ããæ©èœããããµãŒããŒãããªãŒãºããå¯èœæ§ãããããã ããŒãªã³ã°ã«
re/rl/sk/nfe
æ¹ãè¯ãã§ãããã
ãããŠæåŸã«ã ãSysoevã«ãããFreeBSD 7ãã¥ãŒãã³ã°ã®æŽæ°çãšsysctlã·ãŒããã³ã¡ã³ãä»ãã§èŠãããšãçã«å§ããŸãã
1.5 FreeBSDãšå€æ°ã®ãã¡ã€ã«
FreeBSDã«ã¯ããã¡ã€ã«åããã£ã¬ã¯ããªã«ãã£ãã·ã¥ããããã®åªããæè¡ããããŸãã ãã®ããã1ã€ã®ãã£ã¬ã¯ããªã«å€æ°ã®ãã¡ã€ã«ãããå Žåãç®çã®ãã¡ã€ã«ãæ€çŽ¢ããããã«ããªãŒå šäœãåžžã«ã¹ã¯ããŒã«ã€ã³/ã¢ãŠãããã®ã§ã¯ãªããããã·ã¥ããŒãã«æ€çŽ¢ã䜿çšããããšããå§ãããŸãã ãã ããæ倧
vfs.ufs.dirhash_maxmem
å²ãåœãŠãããã¡ã¢ãªã®éïŒãã®ãã¯ãããžãåŒã³åºãããããïŒã¯
vfs.ufs.dirhash_maxmem
ã«ãã£ãŠå¶éãããããã©ã«ãã§ã¯ã2MBãªã©ãéåžžã«å°ããã§ãã
vfs.ufs.dirhash_mem
ãã倩äºãã«å¯ŸããŠåæ¢ãããŸã§ã¡ã¢ãªãå¢ããããšããå§ãããŸãã
1.6ãœããã¢ããããŒããgjournalããã³ããŠã³ããªãã·ã§ã³
æ°ãããã©ãã€ãã®ããžã¯åã«è±ªè¯ã§ã-ãããã¯å®äŸ¡ã§ããããã®æ§èœã¯åãªãã¬ãžã§ãã ãã ãã1ã€ã®æ³šæç¹ããããŸããããŒã¿ã»ã³ã¿ãŒã§é»åãé®æãããå Žåããã®ãããªãã©ãã€ãã®fsckã¯1æé以äžãããããšããããŸãã softjupdatesã䜿çšããŠãã®åé¡ã解決ããããgjournalãä»ããŠã·ã¹ãã ãžã®ãã®ã³ã°ãåºå®ã§ããŸãã æ£ç¢ºã«ããªã次第ã§ã ã
ããã€ãã®ãžã£ãŒããªã³ã°ã®ãã³ãïŒããã©ãŒãã³ã¹ã倱ããªãããã«ã¯ããžã£ãŒãã«ããŒãã£ã·ã§ã³ãå¥ã®ãã£ã¹ã¯ã«èšå®ããããšããå§ãããŸãããŸãããªãŒããŒãããŒã«ãããããã¯ããã£ããããªãããã«ã¯ããžã£ãŒãã«ã»ã¯ã·ã§ã³ã倧ããããããšïŒRAM +ã¹ã¯ãããªã©ïŒããå§ãããŸãã
/etc/fstab
async
ãªãã·ã§ã³ãè¿œå ã§ããŸãã ãããŠã
noatime
ãªã©ã®ãªãã·ã§ã³ã¯ã ã»ãšãã©ãã¹ãŠã®äººã«æããããšãªãæšå¥šã§ããŸãã ïŒ ãã㧠ginerã®ã³ã¡ã³ããèªãïŒ
2.ããã³ããšã³ãã®æé©åïŒnginxïŒ
å®éãç§ã¯ãããã³ããšã³ãã®æé©åãå«ãé床ã®ããã³/ãŸãã¯ææå°æ©ãªæé©åã«æ¥µç«¯ã«å察ããŠããŸãã éåžžãnginxãéçå€æ°ã ãã§ãªãã䜿çšã®æ§è³ªã«å¿ããŠ1ïŒ ã5ïŒ ã®CPUãæ¶è²»ããWebãããžã§ã¯ãã§ã¯ãæ®ãã¯phpã«ãã£ãŠæ¶è²»ãããŸãã
ãã ããnginxæ§æã®æé©åã¯ãµã€ãã®å šäœçãªå¿çæéã«åœ±é¿ãäžããå¯èœæ§ãããããã説æãã䟡å€ã®ããç¹ãããã€ããããŸãã
æšæºçãªæé©åãããç§ã¯ãå§ãã§ããŸã
reset_timedout_connection on; sendfile on; tcp_nopush on; tcp_nodelay on;
ãŸããåŽåè ã®æ°ã§éãã§ãCPU /ããžã®æ°ã ãã§ããããé 眮ããŸããã ãŸããServerfaultã®ãã®ããã¥ã¡ã³ããšNginxã®ãã¹ããã©ã¯ãã£ã¹ãããã¯ã«èª°ããæ £ã芪ããããšããå§ãããŸããäœãæ°ããããšãåŠã¶å¯èœæ§ãé«ãã§ãã
2.1ãã£ã«ã¿ãåãå ¥ãã
FreeBSDã«ã¯ã1ïŒããŒã¿ãå°çããå Žåã2ïŒæå¹ãªhttpèŠæ±ãããå Žåã«ã®ã¿ãã«ãŒãã«ããããã»ã¹ã«ãã±ããã転éã§ããæè¡ããããŸãã ãã®ãã¯ãããžãŒã¯ã åãå ¥ããã£ã«ã¿ãŒãšåŒã°ããŸãã ãã®ãããªãã£ã«ã¿ãŒã¯ãå€æ°ã®æ¥ç¶ã®å Žåã«ãµãŒããŒãã¢ã³ããŒãããDDoS'aããå°ãä¿è·ããã®ã«åœ¹ç«ã¡ãŸãïŒ ããã§ngx_http_limit_req_moduleãè€æ°åèšè¿°ãããŠããŸããïŒãã2çªç®ã®ãµãŒããŒã®ç®¡çã«åªããŠããŸãïŒ
ãã£ã«ã¿ã䜿çšããŠæ¥ç¶åŠçãæå¹ã«ããã«ã¯ããŸãã«ãŒãã«ã¢ãžã¥ãŒã«ãããŒãããå¿ èŠããããŸãã
#ls / boot / kernel / | grep acc accf_data.ko accf_http.ko #kldload accf_http
次ã«ã
nginx.conf
config
nginx.conf
ã
httpready
ãã£ã«ã¿ãŒãæå¹ã«ããŸãã
listen 80 default accept_filter = httpready;
2.2ãã£ãã·ã¥
Nginxã«ã¯ã fastcgiãšãããã·ããã¯ãšã³ãã®äž¡æ¹ããã®éåžžã«æè»ãªå¿çãã£ãã·ã¥ã·ã¹ãã ããããŸãã ããã¥ã¡ã³ããããã«èªã人ã¯çããããžã§ã¯ãã§ãã£ãã·ã¥ã䜿çšããããã®ããã€ãã®ã·ããªãªãæã£ãŠãããšæããŸãã äžè¬çãªã¢ããã€ã¹ããã§ããŸããïŒ
rssãphpã¹ã¯ãªãããä»ããŠäžããããã®ãç¥ã¯çŠããŠããŸã ãã®å Žåãå¿çã3ã5åéå®å šã«ãã£ãã·ã¥ã§ããŸãã
ã²ã¹ãçšã®ãµã€ãã®ã»ãŒå šäœã®ããŒãžã§ã³ãçŽ5åéãã£ãã·ã¥ã«ããã·ã¥ã§ãããšæããŸãïŒãã¡ããããã¥ãŒã¹ãµã€ãããªãéãïŒ
ãµãŒããŒãã£ãã·ã¥ã«å ããŠãã¯ã©ã€ã¢ã³ããã£ãã·ã¥ããããŸãã ãã¹ãŠã®çµ±èšæ å ±ã«ã€ããŠãæããšã«æéåãã«ããããšããå§ãããŸãã
å Žæã* \ãïŒjpg | jpeg | gif | pngïŒ$ { root / var / nnm-club; æå¹æéã¯30æ¥ã§ãã }
2.3 AIO
Nginxã¯ãã§ã«nginxã§ã®AIOã®å°å ¥ã«ã€ããŠæžããŠããŸãã ãããã®ã³ã¡ã³ãã«ã¯éåžžã«èå³æ·±ãè°è«ããããŸãã èŠããã«ãAIOã¯éåžžã«ç¹å®ã®è² è·ã«å¯ŸããŠæçšã§ããããŸããã¯ãŒã«ãŒã®æ°ãæžãããªããå¿çæéãç¶æããã®ã«ã圹ç«ã¡ãŸãã
aioã䜿çšããã«ã¯ãaio.koã«ãŒãã«ã¢ãžã¥ãŒã«ãããŒãããå¿ èŠããããŸãã
# kldload aio
次ã«ã
nginx.conf
aioãšsendfileãæå¹ã«ã
nginx.conf
sendfile on; aio sendfile;
nginxã®æ°ããããŒãžã§ã³ã§ã¯ãsioãsendfileã§äœ¿çšã§ããŸãã ãã®æ§æã«é¢ããŠãããã¥ã¡ã³ãã«ã¯æ¬¡ã®ããã«èšèŒãããŠããŸãã
ãã®æ§æã§ã¯ãSF_NODISKIOãã©ã°ã䜿çšãããsendfileïŒïŒã¯ãã£ã¹ã¯äžã§ãããã¯ãããŸããããã¡ã¢ãªã«ããŒã¿ããªãããšãå ±åããŸãããã®åŸãnginxã¯1ãã€ãã®ã¿ãèªã¿åãããšã§éåæããŒã¿ããŒããéå§ããŸãã åæã«ãFreeBSDã«ãŒãã«ã¯æåã®128Kãã¡ã€ã«ãã¡ã¢ãªã«ããŒãããŸããããã®åŸã®èªã¿åãã§ã¯ããã¡ã€ã«ã¯16Kã ãã®éšåã§ããŒããããŸãã ãããã£ãŠããã®ã¢ãŒãã¯ãæ倧128Kã®å°ããªãã¡ã€ã«ã®é åžã«æé©ã§ãã
ããã§ãã®åé¡ã解決ããããã®FreeBSDã®ãããã¯ããããã-CURRENTã«ç§»è¡ãã8.0ããã³7.xã«ç§»æ€ãããã§ããã
3.ããã¯ãšã³ãã®æé©å
ããšãã°ãjavaã«ã¯ãã·ãªãŒãºã-Xms768m -Xmx1280m -XXïŒ+ UseConcMarkSweepGC -XXïŒ+ CMSIncrementalMode -XXïŒ+ UseCompressedOops -Djava.net.preferIPv4Stack = true -XAnal + Javaããã°ã©ããŒã®ã¿ãç解ã§ããPHPã«ã¯50ïŒ ã®æé©åã®ãªãã³ãŒããã£ãã·ã³ã°ããã ãæ®ãã¯ããŒã¿ããŒã¹ããã®å¿çã®ãã£ãã·ã³ã°ãã芳å¯ãããŸãã ãããã£ãŠããããã¯ã®ãã®éšåã¯éåžžã«æå°æªã§ãã
3.1 APC
Facebookéçºè ã¯ãAPCã®æé©åã«ã€ããŠè©±ããŸããã æéãããã°ãèªãããšã匷ããå§ãããŸãã
3.1.1 APCããã¯
å€ããã¡ã€ã«ã®ããã¯ãããã¯ãŸãã«APCã®ä»£ããã«eAcceleratorã䜿çšãããŠãããããããã¬ãŒããã§ãã ãã®ãããå€ãã®å Žåãããã©ã«ãã®ããã¯ãã¹ãã³ããã¯ãŸãã¯pthreadãã¥ãŒããã¯ã¹ã«å€æŽããããšããå§ãããŸã ã ç§ã®ç¥ãéããpthread mutexã¯3.0.16ããããã©ã«ãã«ãªã£ããããå€ãAPCã®ãµãŒããŒãããå Žåã¯ãæŽæ°ããããšããå§ãããŸãã
3.1.2 APCãã³ã
å€ãã®.phpãã¡ã€ã«ãããå ŽåããŸãã¯APCãŠãŒã¶ãŒãã£ãã·ã¥ã«å€ããã£ãã·ã¥ããå Žåãå€ãäžããå¿ èŠãããå¯èœæ§ãéåžžã«é«ããªããŸãã
ãããã
php.ini
apc.num_files_hint
ããã³
apc.user_entries_hint
ãããã®å€ã¯ãAPCããŒãã«ã®ããã·ã¥ãµã€ãºã«åœ±é¿ãäžãïŒå®éãã¢ããªã±ãŒã·ã§ã³ã®åã«2åã«ãªããŸãïŒã è² è·ä¿æ° > = 0.75ã§ã¯ããã·ã¥ããŒãã«ã®åäœãéåžžã«æªãããšãããããŸãã
3.1.3 APCãã©ã°ã¡ã³ããŒã·ã§ã³
APCã®æçåã¯éåžžã«éèŠã§ãããã®ããããã®ãã£ãã·ã¥ãååŸããããããããã«ããŠããŠã£ã³ããŠã®å€ã«æŸãåºããããšæããŸãã APCã¯ãTTLãŸãã¯LRUã䜿çšããŠã¬ã³ãŒããèªåçã«åé€ã§ããªããããéåžžã®Key-Valueã®ä»£ããã«ã¯ãªããŸããã ã€ãŸããGCããªãããããããã£ãã·ã¥ã«å ¥ãããããšã³ããªã¯ã次ã®2ã€ã®å Žåã«ã®ã¿ç§»åã§ããŸãã
- 圌ãã®TTLæéåãåŸã«åœŒããè¿ã¥ãããšã
- ãã¹ãŠã®ã¡ã¢ãªãäžè¶³ããAPCã¯ç·æ¥å¯Ÿçã«é ŒããŸããããã£ãã·ã¥å šäœããã©ãã·ã¥ããŸãã
èŠçŽãããšã次ã®ããã«èšããŸããé«ãã©ã°ã¡ã³ããŒã·ã§ã³ã¯ãAPCãä»ã®ç®çã§äœ¿çšãããŠããããšã瀺ããŠããŸãã
ããã§ã3.1.xã®ã³ã¡ã³ãã§å€æããŠã¡ã¢ãè¿œå ããå¿ èŠããããŸããã¡ã¢ãªå²ãåœãŠã®ç¹ã§å€ãã®ç¹ãä¿®æ£ãããŸãããã ããã§å€æãããšã3.1.xã¯ãã¹ãŠã®ãŠãŒã¶ãŒã«å¯ŸããŠæ©èœããŸããã
3.2 PHP 5.3
ããã§ã¯ãã¹ãŠãç°¡åã«æããŸã-PHPãæŽæ°ãããšãããã©ãŒãã³ã¹ãåäžããŸãã ãã ãã5.3ã§å»æ¢ãããé¢æ°ã®ãªã¹ããèŠããšããŸã æ©èœãããããæãããå ŽåããããŸãã
ãã®åçŽãã«ãé¢ãããã5.2ãã5.3ãžã®ç§»è¡ã¯ãç¹ã«æ¬çªç°å¢ã§ã¯éåžžã«é·ããªããšæããŸãã
4.ããŒã¿ããŒã¹ã®æé©å
å®éãã¯ã©ãã§æé©ãªããŒã¿ããŒã¹ã®æé©åã¯æ¬¡ã®ãšããã§ãã
- RDBMSããŸã£ãã䜿çšããªãïŒsphinxsearchïŒ
- ããŒã¿ããŒã¹ã䜿çšããªãïŒãã£ãã·ã¥ïŒ
- ããããªã¯ãšã¹ãïŒïŒ...ïŒããããã®æ¿å ¥/æŽæ°ïŒ
- ããŒã¿ããŒã¹ïŒmemcacheQãapacheMQãAQMPãcrontabïŒãšã®éåæäœæ¥
ãã ããäžèšã®ããŒã«ã®ã»ãšãã©ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å€§å¹ ãªæžãæããå¿ èŠã§ãã
4.1 MySQL
ã€ã³ã¿ãŒãããã«ã¯ãMySQLãæé©åããããã®ããã¥ã¢ã«ããããããããŸãããèªã¿æžãã®ã§ããããã¥ã¢ã«ããããŸãããããã»ã©å€ããããŸããã ãããã«ãããWebãããžã§ã¯ãã®åç¶æéäžããã®ããŒã¹ã¯ã¡ã¢ãªããã£ã¹ã¯ããããŠå Žåã«ãã£ãŠã¯ããã»ããµã«çœ®ãããæéããããããç°¡åãªããŠããŒãè¡ãããšã¯ã§ãããäŒè°ãèŠãŠ ããããã¡ã€ã©ïŒoprofileã systemtap ãdtraceïŒãåŠã¶å¿ èŠããããŸããããŠãå€æ°ã®è¿œå ãœãããŠã§ã¢ã䜿çšããŸã ã èšãæããã°ãã€ã³ããã¯ã¹ããœãŒããã°ã«ãŒãåãäœã§ããããç解ããã ãã§ãªããMySQLãå éšçã«ããããã©ã®ããã«äœ¿çšããããç解ãã EXPLAINãã¯ãšãªãã£ãã·ã¥ãããŸããŸãªã¹ãã¬ãŒãžãšã³ãžã³ã®é·æãšçæãç解ããäžè¬çã«ãããªãã®ãããžã§ã¯ãã
次ã«ãæå°éã®ã³ãŒãå€æŽïŒãŸãã¯ã³ãŒãå€æŽãªãïŒã§MySQLãæé©åããæ¹æ³ã説æããŸãã
åã®éšåã§è¿°ã¹ãããã«ãMySQLã®ãã¥ãŒãã³ã°ã®50ïŒ ã¯ã2ã€ã®ãŠãŒãã£ãªãã£ã ãã§åèªåã§å®è¡ã§ããŸãã
4.1.1 5.1ãžã®ç§»è¡
5.1ãžã®ç§»è¡ã¯å€ãã®ããŒãã¹ããããããŸããç¹ã«èå³ããããŸããã
- ãªããã£ãã€ã¶ãŒã®æé©åïŒç¹ã«GROUP BYïŒ
- InnoDBãã©ã°ã€ã³
- ããŒãã£ã·ã§ãã³ã°
- è¡ããŒã¹ã®ã¬ããªã±ãŒã·ã§ã³
ããã«ããããã©ãŒãã³ã¹ãåäžããããã5.1ãè¶ ãã䟡å€ããããŸãã 5.1ãå®å®ããŠããªããšããäºå®ã«ãŸã€ãããã€ãºã«ã€ããŠã¯ãããã¯ãã¯ãé¢ä¿ããªããæåã¯è¥å€§åããããŠããŸããïŒ5.1ãžã®åãæ¿ãã®çŠå¿ãŸãã¯æªæãããã°ãã³ã¡ã³ãããŠãã ããïŒã
ãã¡ãããæã極端ãªãã®ã¯5.4ãé·æéãã¹ãããŠãããããã©ãŒãã³ã¹ã¯éåžžã«ããåäžããŠãããšèšã£ãŠããŸãïŒGoogleãšPerconaããã®ãããã®å©ããªãã§ã¯ãªããšæããŸãïŒã ããããçç£5.4ã¯ãŸã é·ãéã®ãã§ãã
4.1.2 InnoDBãžã®ç§»è¡
MyISAMã䜿çšããŠããå Žåã ãªãã§ããïŒ å®çšŒåãµãŒããŒãMyISAMã«ã©ã®ããã«ååšãããããããŸããïŒãã®ãããªååšããããšèšããŸããïŒããã©ã³ã¶ã¯ã·ã§ã³ããªãå ŽåïŒå€§ããªæŽæ°äžã«ãµãŒããŒãã¯ã©ãã·ã¥ããå ŽåãããŒã¿ã®ååãå€æŽãããååã¯å€æŽãããŸããïŒãTABLE LOCKããããŸãïŒèšé²äžïŒããŒãã«ããã³ãã®éãèªã¿åãããã«ãããã¯ãããŸãïŒãããŒã¿ã»ã³ã¿ãŒã§é»åã倱ãããåŸã®ä¿®çã«ã¯æ°åæéãããå ŽåããããŸãã MyISAMãç¯çŽã§ããã®ã¯ããã«ããã¹ãã€ã³ããã¯ã¹ãååšããããšã ãã§ãããsphinxsearchã§å質ãšé床ã競ãããšã¯ã»ãšãã©ã§ããŸããã
ã¯ããInnoDBã«ã¯æ¬ ç¹ïŒãããããã¯ã倧ããªã€ã³ããã¯ã¹ãFTSã®æ¬ åŠïŒããããŸããããã£ãšå€ãã®ããŒãã¹ããããŸããç§èŠïŒæåã«ãInnoDBã¯å®å šã«ACIDäºæã§ã ãããŒã¿ã¯ã1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã§å®è¡ã§ãïŒ
mysqldump --single-transaction
ãªãã·ã§ã³ïŒã次ã«ãè¡ã¬ãã«ã®ããã¯ïŒmyisamã®TABLE LOCKã«å¯ŸããŠïŒããããŸããã€ãŸããè€æ°ã®ããŒã¿ã§åæã«ããŒã¿ãèªã¿æžãã§ããŸããäºãã«ãããã¯ããããšãªãã¹ã¬ããã
ç¹°ãè¿ãã«ãªããŸãããã¹ã¿ãŒãã¢ããã®å¿ã®ããã©ãŒãã³ã¹ãéåžžã«å¿é ããŠãã人ã ã¯XtraDBã䜿çšã§ããŸãã圌ãã¯ãããI / OããŠã³ãã¯ãŒã¯ããŒãã§å€§ãã«åœ¹ç«ã€ãšèšããŸãã
4.1.3 MySQLãã«ãã€ã³ãã£ãã·ã¥-ã¯ãšãªãã£ãã·ã¥
ã¯ãšãªãã£ãã·ã¥ã¯ãMySQLã®æãã誀解ããããéšåã®1ã€ã§ãã å€ãã®äººã¯512Mbã§ããã眮ããããã¹ãŠãä»ããé£ãã§ããããšèããŸããå€ãã®äººã¯ããšã«ããæ©èœããªãããããå®å šã«ãªãã«ããŸãã ãã®ãã©ã¡ãŒã¿ãŒã®å€ã«å ãåœãŠãããšããŸãã ããããããã®å Žåã¯ãã£ãšè¯ããªãã®ã§ã圌ãæã¡äžããªãã§ãã ããã 次ã«ãã¯ãšãªãã£ãã·ã¥ã¯å®å šã«äžŠååããããµãã·ã¹ãã ã§ã¯ãªãããšãæ確ã«ããå¿ èŠããããŸãããã®ãããåŠçé床ãäœäžããã ããªã®ã§ãããã»ããµæ°= 8ã§ç¡å¹ã«ããããšããå§ãããŸãã æåŸã«ãªããŸãããæã圹ã«ç«ããªãããã§ã¯ãããŸãã-ã¯ãšãªãã£ãã·ã¥ã®æ¬è³ªã¯ããã®ããŒãã«ãžã®å€æŽãçºçãããšãããŒãã«ã«é¢é£ããã³ã³ãã³ããå®å šã«ãªã»ãããããããšã§ãã ã€ãŸããå®éã«ã¯ãã¯ãšãªãã£ãã·ã¥ã¯é©åã«æ£èŠåãããããŒãã«ã§ã®ã¿ããã©ãŒãã³ã¹ãåäžãããŸã ã
QCã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
4.1.4ã€ã³ããã¯ã¹
ã€ã³ããã¯ã¹ããªãããšã¯SELECTã«ãšã£ãŠæªãããšãªã®ã§ãäœåãªã€ã³ããã¯ã¹ã¯INSERT / UPDATEã«ãšã£ãŠæªãã§ãã äžåºŠäœæãããå€ãã€ã³ããã¯ã¹ã1幎以äžããŒã¿ããŒã¹ã«ååšãã貎éãªã¡ã¢ãªãå æããããŒã¿ã®å€æŽãé ããªãããšããããããŸãã ç°¡åãªSQL ã¯ãšãªã圹ã«ç«ã¡ãŸã ã 圹ã«ç«ã¡ãŸãããïŒ ãããã®ãã³ãã®å€ãã¯ããã§èŠã€ããããšãã§ããŸã ã
4.2 PostgreSQL
ç§ã«ãšã£ãŠãPostgresã¯ããªãå¥åŠãªã·ã¹ãã ã®ãŸãŸã§ããäžæ¹ã§ã¯ãšã³ã¿ãŒãã©ã€ãºã¯ã©ã¹ã®ããŒã¹ã§ãããSkypeã¯ãã®äžã§åäœããŸããä»æ¹ã§ã¯ãããã©ã«ãèšå®ã¯æºåž¯é»è©±ã§ãèµ·åã§ããããã«ãªã£ãŠããŸãã äžè¬ã«ã調æŽããå¿ èŠããããã»ãšãã©ãã¹ãŠãããã§èª¿æŽã§ããŸãã ã»ãŒ200ã®å¯èœãªãã©ã¡ãŒã¿ãŒã®ãã¡ã äž»ãªãã®ã¯45ã®ãã¥ãŒãã³ã°ãæ åœããŸã=ïŒ
ã¡ãªã¿ã«ãä»ã«ç§ãé©ããã®ã¯ãèšå®å ã®è¡ãã³ã¡ã³ãã¢ãŠããããšãã«ãPostgreSQLããããã©ã«ããã«ãªã»ããããããèŠããŠããããã®ã䜿çšããããšã§ã...
ã€ã³ã¿ãŒãããäžã®Postgresã®ãã¥ãŒãã³ã°ã«ã¯å€ãã®ããšããããŸãïŒããã¥ã¢ã«ã®äžéšã¯å€ããªã£ãŠãããããå ¬éæ¥ãšæ°ããããŒãžã§ã³ã§ã¯maintenance_memã«çœ®ãæããããvacuum_memããŒã¯ãŒãã«æ³šæããŠãã ããïŒã ãããã質åã®ãããªãã®ããããŸãïŒ äž»ãªããšã«ã€ããŠã¯ ãé«åºŠãªDB管çè ã®ããã®éåžžã«ææ ®æ·±ãè«æããããŸã...ç§ã¯ã管çè ãšããã°ã©ããŒãè³æ Œã®ããDBAãæ¢ããŠããéã«ãããžã§ã¯ããç«ã¡äžããã®ãå©ããåºæ¬ããäŒãããŸãã
4.2.1ã€ã³ããã¯ã¹
ããã§ãå ¬æ£ãªè³ªåããããŸãããªããMySQLã€ã³ããã¯ã¹ãæåŸã«ãPosgreSQLãæåã«ãã£ãã®ã§ããããïŒ ãã®ç¹ã§ã®æ©èœã¯MySQLã®æ©èœãããã¯ããã«é«ãããããã¹ãŠãåçŽã§ã ã BããªãŒãããã·ã¥ãGiSTãGINãããã³åŒã®è€æ°åãéšåãã€ã³ããã¯ã¹ïŒãããã¯ãã¹ãŠãPostgerSQLãããã°ã©ã ãã人ãç解ããå¿ èŠããããŸãã ãããŠããããååšããããšãç¥ãããã ãã§ãªããã©ã®å Žåã«ããçš®ã®ã€ã³ããã¯ã¹ã䜿çšããå¿ èŠãããã®ãââããããŠä»ã®ã©ã®ã€ã³ããã¯ã¹ã䜿çšããã®ããç解ããããã§ãã
ç£èŠã«æçšãªSQLã¯ãšãªïŒã€ã³ããã¯ã¹ã®çµ±èšãå«ãïŒã¯ã ããã«ãããŸã ã
4.2.2 pgBouncerãªã©ã
pgBouncer ïŒãŸãã¯ãã®ä»£æ¿ïŒã¯ãããŒã¿ããŒã¹ãåãããµãŒããŒã«æåã«ã€ã³ã¹ããŒã«ããå¿ èŠããããã®ã§ãã æ¥ç¶ãããŒãžã£ãŒã®åçŽãªã€ã³ã¹ããŒã«ã«ããè² è·ã®10åã®äœäžã瀺ããµããã³ã°ã©ããååã«èŠãŸããã æ¥ç¶ããŒã©ãŒããªãå ŽåãããŒã¿ããŒã¹ãžã®æ¥ç¶ããšã«åå¥ã®ããã»ã¹ãèµ·åããããã®ããã»ã¹ã¯å°ãªããšã
work_mem
ã®
work_mem
é£ãå°œãããSQLã¯ãšãªãå®è¡ããŠç¬èªã®çš®é¡ã®CPUãšããŒããã©ã€ãã®æŠããéå§ããŸãã ãã¹ãŠã¯åé¡ãããŸãããããã®ãããªããã»ã¹ã®æ°ã200ã500ã®èŠæš¡ããå€ãããšããµãŒããŒã¯éåžžã«åŒ·åãªãµãŒããŒã§ãã£ãŠãã¿ã€ãã«ãªããŸãã ãšãŠããã€ãã pgBouncerã¯ããããç§ãã¡ãæããŸãã
ãŸããPostgreSQLãæäœããããã®äŸ¿å©ãªããŸãã¯äžå¯æ¬ ãªã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ãã¯ã postgresqlrussia.orgã«ãããŸãã
4.2.3 pgFouine
pgFouineã¯ããã®ãããªããããã®ãªãããã°ã©ã ã®1ã€ã«ãããŸããã ããã¯ãphpã®éåžžã«é«åºŠãªmysqlslaã¢ããã°ã§ãã Playr ïŒãã°ã®ãªãã¬ãŒã€ãŒçæïŒã䜿çšãããšãã¹ããŒãžã³ã°ãµãŒããŒäžã®ãªã¯ãšã¹ããã»ãŒãæŠéãç¶æ ã§æé©åã§ããŸãã
4.3ããŒã¿ããŒã¹ã®ã¢ã³ããŒã
åè¿°ããããã«ãããŒã¿ããŒã¹ãæé©åããŠããã©ãŒãã³ã¹ãåäžãããæè¯ã®æ¹æ³ã¯ãã§ããéãã¢ã¯ã»ã¹ããªãããšã§ãã
4.3.1 SphinxQL
ååã®èšäºã§ã¯ã sphinxsearchã«åºã¥ãæ€çŽ¢ãå°å ¥ãããšããäºå®ã«ã€ããŠèª¬æããŸããã ãããã誰ããSphinxAPIã®äœ¿çšãéå§ããããã«æ°åè¡ã®ã³ãŒããæ€çŽ¢ãããã°ã®ãã¹ããšãã£ããã«ããã«1ã2åã®å埩ãè²»ããããšãã§ããããã§ã¯ãããŸããã ãã®åé¡ã¯éåžžã«ãšã¬ã¬ã³ãã«è§£æ±ºãããŸãããSphinxSearchã¯MySQLãµãŒããŒã®ãµããããããšãåŠã³ãŸããã
sphinx.conf
ã
sphinx.conf
ãäœæããcronã§ã€ã³ãã¯ãµãŒã®ãšã³ããªãäœæããæ€çŽ¢ãå¥ã®ãmysqlãã®ãããªããŒã¿ããŒã¹ã«åãæ¿ããã ãã§ãã ã³ãŒããããã«ç·šéããå¿ èŠããªãå¯èœæ§ããããŸãã
ã¹ãã£ã³ã¯ã¹ã«åãæ¿ãããšäœãåŸãããŸããïŒ æ€çŽ¢ã®é床ãšå質ãæ¹åããããšã«å ããŠãMyISAMãšãã®FTSãåãé€ãããšãã§ããŸããéåžžã«èå³æ·±ãã®ã¯ãæ€çŽ¢çšã®æ°ããã¢ããªã±ãŒã·ã§ã³ãèæ¡ããããšã§ã ããã®ãããæ€çŽ¢ãšRSSãçµã¿åãããŸãããããã¯éåžžã«äŸ¿å©ã§ããã
ãããŠãsphinxsearchã®ååšããå©çãåŸãããšãã§ããããã€ãã®äŸããããŸãïŒã»ãšãã©å€åºäžã«çºæãããã®ã§ãæ¿ããå©ããªãã§ãã ããïŒïŒ
äŸ1 ïŒé·ãéStarcraft 2ãåŸ ã£ãŠããŸãããã次ã®åœ¢åŒã®RSSãã£ãŒãããã€ã§ãè¿œå ã§ããŸãïŒrss.phpïŒQ = "starcraft 2"ãGoogle Readerã«è¿œå ããããã«ã€ããŠèª¬æãããã¹ãŠã®æçš¿ã確èªããŸãã ãŸãããã©ãŒã©ã ã®ã¡ã³ããŒãšããŠãç§ã®ããã¯ããŒã ãèšåãããŠãããã¹ãŠã®æçš¿ãèŠããã§ãã ãããåé¡ã§ã¯ãããŸãããURLãä¿®æ£ããã ãã§ãã
äŸ1.5 ïŒãµã€ãã«ã¢ã¯ã»ã¹ãããŠãŒã¶ãŒãæ€çŽ¢ããŒãèŠãã¯ãšãªãå ¥åããäœãèŠã€ãããŸããã§ãããããã®ãªã¯ãšã¹ãã®RSSãžã®ãªã³ã¯ãå«ãããã®æ€çŽ¢ã賌èªããªã³ã¯ã衚瀺ãããŸããã ãããã£ãŠããŠãŒã¶ãŒã ããããªããé¢ããããšã¯ãããŸãã=ïŒïŒ
äŸ2 ïŒæ ç»21ããŸãã¯ç¥ã®çŠããããæ ç»9ãèŠã€ãããft_min_word_len
èªæ®ºã§ã¯ãªããft_min_word_len
ã¯ãšãªã®é·ââããããé·ããšäžå¹³ãèšã£ãŠãåã«ãã®ãããªãªã¯ãšã¹ããæåŠããŸãã ã¹ãã£ã³ã¯ã¹ã¯ãã»ãŒç¬æã«çµæããTwenty One / 21ãã®åœ¢åŒã§è¿ãã2çªç®ã®ã±ãŒã¹ã§ã¯ããDistrict No. 9 / District 9ããšãNine / 9ãããéžæããããšãã§ããŸãã
4.3.2éRDBMSã¹ãã¬ãŒãž
ãããžã§ã¯ãã«ã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã䜿çšã§ããªãå Žæãéåžžã«å€ããããŸãã åçŽãªããŒãšå€ã®ã¹ãã¢ã§ååã§ãã ãããã®å©ç¹ã¯ä»ã§ã¯ååã§ãã
ãŸãã Hive ïŒSQLã®ãããªQLãšHadoop圢åŒã®ããã¯ãšã³ããåããããŒã¿ãŠã§ã¢ããŠã¹ïŒãªã©ã®éåžžã«èå³æ·±ããããžã§ã¯ãããããŸãã äžè¬ã«ãããŒã¿ãŠã§ã¢ããŠã¹ã䜿çšãããšãOracleïŒMySQLãPostgreSQLãFoxProãå¿ èŠãªãã®ã«äžç·ãåŒãïŒã ãã§ãªããã©ã®ããã«çããŠããããå®éšããããšãã§ããŸãã
ãŸãããã®é床ã®ããã«ãããŒãšå€ã®ããŒã¿ããŒã¹ã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãããµã³ãã«ããã£ãã·ã¥ããããã«äœ¿çšãããŸãã ãã£ãã·ã¥èªäœã«ã€ããŠïŒãã¬ãŒã³ããŒã·ã§ã³ãã¹ã¯ããŒã«ãããããªãèŠãŠã Andrey Smirnovã®ããã°ããã¬ããŒãã®å šæãèªãã åŸãç§ã¯å®è³ªçã«è¿œå ãããã®ããããŸããã ã»ãã®ããã€ãã®ãã³ãïŒ
PHPã«éåžžã«å€§ããªãããžã§ã¯ããããå Žåã¯ããªãã³ãŒããã£ãã·ã¥ãã«ã¹ã¿ã ããŒã¿ãä¿åããæ©èœãå¿ããªãã§ãã ããã æãäžè¬çã«äœ¿çšãããã°ããŒãã«å€æ°ããã®äžã«ä¿åã§ããŸãããŸãããããã®å€ãã¯ãªããå°ãããããã¡ã¢ãªãå°ãããæ¶è²»ããŸããã次ã«ããµã³ããªã³ã°ã¬ãŒãã¯ãé£æ¥ãã·ã³ã«ããmemcachedãããé«ããªããŸããæãèå³æ·±ãã®ã¯ã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯ãã°ããŒãã«å€æ°ã®ãããã¯ãmemcachedãã¡ãŒã ãã1å°ã®ãã·ã³ã«æžã蟌ãŸããå ŽåããããŸããããããã®å€æ°ã¯ãã¹ãŠã®ããã¯ãšã³ãã䜿çšããããããã®ãã·ã³ãžã®ãã©ãã£ãã¯ã¯äžé©åãªãµã€ãºã«å¢å ãããã·ã³ã¯éåžžã«é ããªãå§ããŸããããããŠããããšãšãã«ãã¹ãŠã®ããã¯ãšã³ãããã®ç¶æ³ããæãåºãæ¹æ³ã¯ãAPC / eAcceleratorã¿ã€ãã®ãªãã³ãŒããã£ãã·ã¥ã«ã°ããŒãã«å€æ°ãä¿åããããmemcachedãã¡ãŒã ãããã¹ãŠã®ãµãŒããŒã«å€æ°ãè€è£œããäžè²«æ§ããã·ã¥ã¢ã«ãŽãªãºã ã«äŸå€ãå°å ¥ããããšã§ãã
4.4ãšã³ã³ãŒãã£ã³ã°
ãšã³ã³ãŒãã£ã³ã°ã«é¢ããç°¡åãªã¡ã¢ïŒ
UTF-8ã¯1ã€ãé€ããã¹ãŠã®äººã«é©ããŠããŸã-ãã®äžã®ãã·ã¢èªã®ããã¹ãã¯æ£ç¢ºã«2åã®ã¹ããŒã¹ãå æãããããå®å šã«åäžèšèªã®ã³ã³ãã£ã³ãžã§ã³ããããå Žåã䜿çšããåã«èæ ®ãã¹ãããšããããŸãã
4.5éåæ
å®éãåæããŒã¿åŠçã¯åžžã«å¿ èŠãªããã§ã¯ãªããéåæåŠçã§çœ®ãæããããšãã§ããå Žåãéåžžã«å€ããããŸãã
éåæåŠçã¯ã1ïŒãµã€ã/ã¢ããªã±ãŒã·ã§ã³ã®å¿çæéãæ¹åãã2ïŒãµãŒããŒã®è² è·ã軜æžããã®ã«åœ¹ç«ã¡ãŸãã
æåã®ãã®ã§ãã¹ãŠãæ確ãªå Žåã2çªç®ã¯ãããèŠæ±ãåäžã®èŠæ±ãããéãå®è¡ããããšããäºå®ã®çµæã§ãã
éåæã¯ããŸããŸãªæ¹æ³ã§ç·šæã§ããŸãã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯ãããã¯ãã¡ãã»ãŒãžãã¥ãŒã䜿çšããŠè¡ãããïŒApacheMQãRabbitMQã®ãZeroMQãAQMPã¯ãã§ã«äœåºŠãè¿°ã¹ã«ã€ããŠHabréïŒã眰éã§ã¯ãããªããcronãè¡ãããšãã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãããããªããšã
1. SSHGuardãŸãã¯ä»£æ¿ã
sshã«ãã«ãŒããã©ãŒã¹å¯Ÿçãã€ã³ã¹ããŒã«ããããšã¯æšæºçãªæ £è¡ã§ãããšããäºå®ã«å ããŠãå®å šã«æ»ãã ãããã«ãã£ãŠæ»æãããæ°äžã®ãã°ã€ã³ãã¹ãã¢ã®ãã«ãŒããã©ãŒã¹ãéå§ãããšãã«ããµãŒããŒãLoad Avarengeã®æ¥æ¿ãªããŒã¹ãããä¿è·ããã®ã«ã圹ç«ã¡ãŸãã
2. xtrabackup
LVMã¹ãããã·ã§ããã¯ãã¬ãŒãã§ãã mysqldump-ããŒãã«ãããã¯ããæ°é±é埩å ã§ããããã¹ãããã¯ã¢ãããäœæããŸããéåžžã«è¯ã MySQLãããã¯ã¢ããããããã®ããŒã«ã§ãxtrabackup Perconaã«ãã£ãŠãã€ã³ã¿ãŒãããã®ãã·ã¢ã®éšåãããã«ã€ããŠèããã®ã§ãç§ã¯ããã匷ãå¡ããŸãããèŠããã«ãxtrabackupã¯InnoDB / XtraDBããŒãã«ã®ãã³ããããã³ã°ãã€ããªããã¯ã¢ãããå¯èœã«ããããŒã«ã§ãããå€ãã®èšå®ããããŸãããªããããéåžžã«è¯ããŠçŽ æŽãããã®ã§ã¯ãªãã®ã§ããïŒç§ã®æèŠã§ã¯ãæè¯ã®ããŒã«ã¯ZFSã®ã¯ããŒã³ã§ãããããã¯å³åº§ã«è¡ããããããããããŒã¿ããŒã¹ã埩å ããããšã¯ãããã¹ã«èšå®å ã®ãã¡ã€ã«ãžã®ãã¹ãå€æŽããã ãã§ããããªã«ããªã倱æããå ŽåãããŒã«ããã¯ã§ããŸããã¯ããŒã³ã䜿çšã§ããŸãã«ãŒãã«ã®ã¢ããã°ã¬ãŒãã倱æããå Žåãªã©ã«ãã·ã¹ãã å šäœã埩å ããŸãã
äžè¬çã«ã5.4ã§ã¯çµã¿èŸŒã¿ã®ãªã³ã©ã€ã³ããã¯ã¢ãããçŽæãããŠããããã§ãã
3.ã¡ãŒã«ãå¥ã®ãã¹ãã«è»¢éãã
ãã®æé©åã¯ããããªããšã®ããã«æããŸããã倧éã®ã¹ãã ããµãŒããŒã«æµã蟌ããšããã©ãã£ãã¯ãå€§å¹ ã«åæžããå€ãã®IOPãç¯çŽã§ããŸãã
4.ãµãŒãããŒãã£ãœãããŠã§ã¢ãšã®çµ±å
ã©ããããããããªã³ã©ã€ã³ã²ãŒã ã«é¢ããèšäºãããã«æ²èŒãããŸãã;ãããããããªããæãé©åãªæ段ã䜿çšããããã«å¿ èŠãªãã¹ãŠã®ããã«ïŒèª°ãããããåŒã°ããããšãèŠããŠããŸããïŒïŒãããã£ãŠãããšãã°ããŠãŒã¶ãŒãæ·»ä»ãã¡ã€ã«ä»ãã®é»åã¡ãŒã«ã¡ãã»ãŒãžã亀æã§ããããã«ããããã«ãDB / FSã®åœ¢åŒã§ããã¯ãšã³ãã䜿çšããŠPHPã¹ã¯ãªããã®äœæãéå§ããå¿ èŠã¯ãããŸãããããã«äœ¿çšã§ããŸãã imapããŠãç°¡åãªã¢ããã¿ãŒãäœæããŸããåæ§ã«ããŠãŒã¶ãŒåãã®ãã£ããã¯ããµãŒããŒããŸã£ããèªã¿èŸŒãŸãªãjavascriptã¯ã©ã€ã¢ã³ããåãããžã£ããŒãµãŒããŒã«åºã¥ããŠæ§æã§ããŸãããããäžã®ãªããžã§ã¯ããããŒã¯ããå¿ èŠããããŸããïŒããã§ããã·ã¥ã¢ãããæžãæ¹ãç°¡åã§ããYandex / Googleãããã䜿çšããŸããèå³æ·±ãããšã«ãå®æåçšã®ã¢ããã¿ãŒã«åºã¥ããŠäœæããããã®ãããªã·ã¹ãã ã¯ãå°ãªããšãPHPããã³MySQLãœãªã¥ãŒã·ã§ã³ãããæ¡éãã«åªããŠããããšããããããŸãã
5.ã¢ãã¿ãªã³ã°
çŸåšã®ç¶æ ãããããªãå Žåãæé©åãããã®ã¯ãããŸãããããã©ãŒãã³ã¹ãé 延ã空ããªãœãŒã¹ãªã©ã®ã¡ããªãã¯ããã¹ãŠç£èŠãããã°ã«èšé²ããã§ããã°ã°ã©ãã«æç»ããå¿ èŠããããŸããããŒã«ã®å©ç¹ã¯ååã§ãïŒNagiosãZabbixãCactiãMunin ....
ãããããååŸãããµãŒããŒã«é 眮ããŠããµãŒããŒã®è² è·ã«å¯Ÿããæé©åã®å¹æã芳å¯ããŸããç£èŠã¯ãããã©ãŒãã³ã¹ã®åé¡ã®äºæž¬ã«ã圹ç«ã¡ãŸãã
6.çæã®æé©å
çµå±ã®ãšããã圌ã¯èª€ã£ãŠãã®ããã«åä»ããããŠããŸãããã¯ã©ããæ°ããââãµãŒããŒã«ç§»åãããšããç§ãã¡ã¯èªåã®ã¹ãã³ã§ãããæããã»ãšãã©ãã¹ãŠïŒAPC1ãAPC2ãMySQLãnginxãxbttïŒã®ãã°ãèŠã€ããããšãã§ããŸãããOpenSourceã®å©ç¹ã¯ãèªåã§ç°¡åãªãã®ãä¿®æ£ã§ããããšã§ãã
ããšããã®ä»£ããã«
ãŸããã®ããã«ãããããã¹ãŠã§ãã圌ã¯ã»ãŒ1é±éå°å·ããŸãã...ç¿åŸãããã®ãç¿åŸãããã®ãZFSãåæ£FSãã¬ããªã±ãŒã·ã§ã³ãã·ã£ãŒãã£ã³ã°ã®èå°è£ãæ®ããŸããããããã¯åã ã®æçš¿ã®ãããã¯ã§ããç§ã®ææ³ãå¥èªç¹ã§ã¯ãããŸãã«ãæªããç§ã¯ç¢ºä¿¡ããŠãããšãããã€ãWordã®åããããŠãã¹ãŠã«ãã§ãã¯ãããŒãããžãŒããªãããããèŠã€ããã®å Žåã -ã«æžã蟌ã¿ãå人çã«è£æ£ã
ããªããæçš¿ã§ã«ã³ããèŠã€ãããªããããªãã¯ç§ã®ãããžã§ã¯ãã®1ã€ã§ã«ã³ããèŠã€ããå¯èœæ§ãé«ãã®ã§ãèšäºãžã®æ¹å€ãæè¿ããŸãã