mysql illegal mix of_mysql字符集问题:Illegal mix of collations
jinlinlucky:二、多路處理模塊的配置說明|@||@|Apache HTTP服務(wù)器是一個(gè)強(qiáng)大的、靈活的能夠在多種平臺、不同環(huán)境下運(yùn)行的Web服務(wù)器。由于不同的平臺和不同的環(huán)境經(jīng)常產(chǎn)生不同的需求,為了達(dá)到同樣的最佳效果則需要采取不同的實(shí)現(xiàn)方法, Apache的模塊化設(shè)計(jì)就可以很好的適應(yīng)大量不同的環(huán)境。使得網(wǎng)站管理員能夠在編譯和運(yùn)行時(shí)憑借載入不同的模塊來決定服務(wù)器的附加功能。Apache的多路處理模塊(MPM)就是用于選擇處理網(wǎng)絡(luò)端口綁定、接受請求并指派子進(jìn)程處理來自客戶端的請求。|@||@|默認(rèn)的MPM|@||@|下表列出了不同操作系統(tǒng)上默認(rèn)的MPM。如果編譯時(shí)沒有進(jìn)行選擇,這將是默認(rèn)選擇的MPM。|@||@|操作系統(tǒng)名稱|@|MPM名稱|@||@|BeOS|@|beos|@||@|Netware|@|mpm_netware|@||@|OS/2|@|mpmt_os2|@||@|Unix|@|prefork|@||@|Windows|@|mpm_winnt|@||@||@|1、prefork.c模塊(一個(gè)非線程型的、預(yù)派生的MPM)|@||@|prefork.c模塊是由一個(gè)單獨(dú)的控制進(jìn)程(父進(jìn)程)負(fù)責(zé)產(chǎn)生子進(jìn)程,這些子進(jìn)程用于監(jiān)聽請求并作出應(yīng)答。Apache設(shè)置了一些備用的(spare)或者是空閑的子進(jìn)程來處理即將接收的請求,這樣可以避免服務(wù)器接收到請求后在創(chuàng)建子進(jìn)程。在Unix系統(tǒng)中,父進(jìn)程通常以root身份運(yùn)行以便邦定80端口,而 Apache產(chǎn)生的子進(jìn)程通常以一個(gè)低特權(quán)的用戶運(yùn)行。User和Group參數(shù)就是用于設(shè)置子進(jìn)程的低特權(quán)用戶。運(yùn)行子進(jìn)程的用戶必須要對它所服務(wù)的內(nèi)容有讀取的權(quán)限,但是對服務(wù)內(nèi)容之外的其他資源最好擁有盡可能少的權(quán)限。|@||@|【配置示例】|@||@||@||@|StartServers ? ? ? 8|@||@|MinSpareServers ? ? 5|@||@|MaxSpareServers ? 20|@||@|ServerLimit ? ? ? 400|@||@|MaxClients ? ? ? 256|@||@|MaxRequestsPerChild 4000|@||@||@||@||@|【參數(shù)說明】|@||@|1.ServerLimit|@|默認(rèn)的MaxClient最大是256個(gè)線程,如果想設(shè)置更大的值,就需要修改ServerLimit這個(gè)參數(shù)。例子中的400是ServerLimit這個(gè)參數(shù)的最大值。如果需要更大,則必須編譯apache,此前都是不需要重新編譯Apache。|@||@|2.StartServers |@|指定服務(wù)器啟動時(shí)建立的子進(jìn)程數(shù)量,因?yàn)樽舆M(jìn)程的數(shù)量動態(tài)的取決于負(fù)載的輕重,所以一般沒有必要調(diào)整這個(gè)參數(shù),prefork模式默認(rèn)為5。|@||@|3.MinSpareServers |@|指定空閑子進(jìn)程的最小數(shù)量,所謂空閑子進(jìn)程是指沒有正在處理請求的子進(jìn)程。默認(rèn)為5。如果當(dāng)前空閑子進(jìn)程數(shù)少于MinSpareServers ,那么Apache將以最大每秒一個(gè)的速度產(chǎn)生新的子進(jìn)程,只有機(jī)器在非常繁忙的情況下才需要調(diào)整這個(gè)參數(shù)。|@||@|4.MaxSpareServers |@|設(shè)置空閑子進(jìn)程的最大數(shù)量。默認(rèn)為10。如果當(dāng)前有超過MaxSpareServers數(shù)量的空閑子進(jìn)程,那么父進(jìn)程將殺死多余的子進(jìn)程。如果該參數(shù)的值設(shè)置比MinSpareServers小,Apache則會自動將其修改成"MinSpareServers+1"。|@||@|5.MaxClients|@|指可以服務(wù)于客戶端請求的最大子進(jìn)程數(shù)量,即限定同一時(shí)間客戶端最大接入請求的數(shù)量,默認(rèn)值為256。任何超過MaxClients限制的請求都將進(jìn)入等候隊(duì)列,一旦一個(gè)連接被釋放,隊(duì)列中的請求將得到服務(wù)。|@||@|6.MaxRequestsPerChild |@|每個(gè)子進(jìn)程在其生存期內(nèi)允許處理的最大請求數(shù),默認(rèn)為10000.到達(dá)MaxRequestsPerChild的限制后,子進(jìn)程將會結(jié)束。如果MaxRequestsPerChild為"0",子進(jìn)程將永遠(yuǎn)不會結(jié)束。這個(gè)參數(shù)也可以理解成控制服務(wù)器殺死舊進(jìn)程產(chǎn)生新進(jìn)程的頻率。|@|注意:|@|從系統(tǒng)穩(wěn)定性來考慮將MaxRequestsPerChild設(shè)置成非零有兩個(gè)好處:|@|1.可以防止(偶然的)內(nèi)存泄漏無限進(jìn)行,從而耗盡內(nèi)存。|@|2.給進(jìn)程一個(gè)有限壽命,從而有助于當(dāng)服務(wù)器負(fù)載減輕的時(shí)候減少活動進(jìn)程的數(shù)量。|@||@|【工作原理介紹】|@||@|首先服務(wù)啟動后會創(chuàng)建以StartServers個(gè)數(shù)的進(jìn)程,然后等待來自客戶端的請求。我們這里先假設(shè)從客戶端來了大量的請求,這時(shí)Apache服務(wù)器會根據(jù)自身的負(fù)載情況自動創(chuàng)建新進(jìn)程,如果服務(wù)器一直沒有空閑進(jìn)程那么它就會一直創(chuàng)建新進(jìn)程,直到滿足MaxClients和ServerLimit設(shè)置的最大值。如果來自客戶端的負(fù)載沒有那么大,Apache服務(wù)器將會根據(jù)MinSpareServers、MaxSpareServers和MaxRequestsPerChild設(shè)置的值來殺掉多余的進(jìn)程。其中每個(gè)進(jìn)程在某個(gè)確定的時(shí)間只能維持一個(gè)連接。|@||@|【小結(jié)】|@||@|上面敘述的這些參數(shù)中,對系統(tǒng)性能影響較大的有兩個(gè):MaxClients 和ServerLimit。這個(gè)兩個(gè)參數(shù)主要影響Web服務(wù)器處理客戶端請求的能力,它們決定著服務(wù)器創(chuàng)建用來處理請求的進(jìn)程的最大值。如果來自客戶端的請求總數(shù)已經(jīng)達(dá)到系統(tǒng)創(chuàng)建進(jìn)程的最大值(可通過ps -ef|grep http|wc –l來確認(rèn)),那么后面來的請求就要排隊(duì),直到某個(gè)已處理請求完成。這就是應(yīng)用系統(tǒng)資源還很富余而HTTP訪問卻很慢的主要原因。如何找出這個(gè)兩個(gè)參數(shù)的最佳值需要綜合很多因素,但一般情況下可以參考系統(tǒng)性能測試結(jié)果和Web服務(wù)器的系統(tǒng)資源。|@||@|注意:prefork模式下創(chuàng)建較多的進(jìn)程將會占去大量系統(tǒng)內(nèi)存,如果MaxClients和ServerLimit設(shè)置過大時(shí)可能會造成Web服務(wù)器崩潰。|@||@|2、worker.c模塊(支持混合的多線程多進(jìn)程的多路處理模塊)|@| worker 模塊使用多個(gè)子進(jìn)程,每個(gè)子進(jìn)程有多個(gè)線程。每個(gè)線程在某個(gè)確定的時(shí)間只能維持一個(gè)連接。通常來說,在一個(gè)高流量的HTTP服務(wù)器上,worker 模式是個(gè)比較好的選擇,因?yàn)樗膬?nèi)存使用比prefork要低得多。但worker模式也有不完善的地方,如果一個(gè)線程崩潰,整個(gè)進(jìn)程就會連同其所有線程一起"死掉"。由于線程共享內(nèi)存空間,所以一個(gè)進(jìn)程在運(yùn)行時(shí)必須被系統(tǒng)識別為"每個(gè)線程都是安全的"。|@||@|【配置示例】 |@||@||@||@|StartServers ? ? 2|@||@|MaxClients ? ? 400|@||@|ServerLimit ? ? 12|@||@|MinSpareThreads ? 25|@||@|MaxSpareThreads ? 75|@||@|ThreadsPerChild ? 25|@||@|ThreadLimit ? ? 75|@||@|MaxRequestsPerChild 0|@||@||@||@||@|【參數(shù)說明】|@||@|1.ServerLimit |@|服務(wù)器允許配置的進(jìn)程數(shù)上限。這個(gè)參數(shù)和ThreadLimit結(jié)合使用便決定了MaxClients所能設(shè)置的最大值。任何在重啟期間對這個(gè)參數(shù)的改變都將被忽略,但對MaxClients的修改卻會生效。|@||@|2.ThreadLimit|@|每個(gè)子進(jìn)程可設(shè)置的線程數(shù)上限,這個(gè)參數(shù)決定了每個(gè)子進(jìn)程可創(chuàng)建線程的數(shù),即ThreadsPerChild的上限。任何在重啟期間對這個(gè)參數(shù)的改變都將被忽略,但對ThreadsPerChild的修改卻會生效。默認(rèn)值是"64".|@||@|3.StartServers |@|服務(wù)器啟動時(shí)建立的子進(jìn)程數(shù),默認(rèn)值是"3"。|@||@|4.MinSpareThreads |@|最小空閑線程數(shù),默認(rèn)值是75。MPM將基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。如果服務(wù)器中總的空閑線程數(shù)太少,子進(jìn)程將產(chǎn)生新的空閑線程。|@||@|5.MaxSpareThreads |@|設(shè)置最大空閑線程數(shù)。默認(rèn)值是250。MPM將基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。如果服務(wù)器中總的空閑線程數(shù)太多,子進(jìn)程將殺死多余的空閑線程。MaxSpareThreads的取值范圍是有限制的,在Apache的 worker模式下是要求大于等于 MinSpareThreads與ThreadsPerChild之和來自動修正你設(shè)置的值。|@||@|6.MaxClients |@|允許同時(shí)接收客戶端最大請求的數(shù)量(最大線程數(shù)量)。任何超過MaxClients限制的請求都將進(jìn)入等候隊(duì)列。默認(rèn)值是400,即16 (ServerLimit)乘以25(ThreadsPerChild)。因此需要增加MaxClients的時(shí)候,你必須同時(shí)增加 ServerLimit的值。|@||@|7.ThreadsPerChild |@|每個(gè)子進(jìn)程建立常駐的執(zhí)行線程數(shù)。默認(rèn)值是25。子進(jìn)程在啟動時(shí)建立這些線程后就不再建立新的線程了。|@||@|8.MaxRequestsPerChild |@|設(shè)置每個(gè)子進(jìn)程在其生存期內(nèi)允許提供服務(wù)的最大請求數(shù)量。到達(dá)MaxRequestsPerChild的限制后,子進(jìn)程將會結(jié)束。如果MaxRequestsPerChild為"0",子進(jìn)程將永遠(yuǎn)不會結(jié)束。|@||@|將MaxRequestsPerChild設(shè)置成非零值有兩個(gè)好處:|@|1.可以防止(偶然的)內(nèi)存泄漏無限進(jìn)行,從而耗盡內(nèi)存。|@|2.給進(jìn)程一個(gè)有限壽命,從而有助于當(dāng)服務(wù)器負(fù)載減輕的時(shí)候減少活動進(jìn)程的數(shù)量。|@|注意|@|對于KeepAlive鏈接,只有第一個(gè)請求會被計(jì)數(shù)。事實(shí)上,它改變了每個(gè)子進(jìn)程限制最大鏈接數(shù)量的行為。|@||@|【工作原理介紹】:|@||@|worker的工作原理是:先由主控制進(jìn)程創(chuàng)建“StartServers”個(gè)子進(jìn)程,每個(gè)子進(jìn)程中含有“ThreadsPerChild”個(gè)線程,各個(gè)線程獨(dú)立地處理來自客戶端的請求。同Prefork一樣,為了不在請求到來時(shí)在去創(chuàng)建線程,MinSpareThreads和MaxSpareThreads決定了最少和最多空閑線程數(shù);隨著負(fù)載逐漸增大,而現(xiàn)有子進(jìn)程中的線程不能滿足負(fù)載時(shí),主控進(jìn)程將按照“ServerLimit”和“MaxClients”的限制去創(chuàng)建新進(jìn)程,如果“ServerLimit”達(dá)到上限而ServerLimit* ThreadsPerChild ThreadsPerChild。如果“ServerLimit”未達(dá)到上限而“MaxClients”達(dá)到上限,那么服務(wù)器將不采取任何行動。倘若負(fù)載逐漸減小,那么Apache服務(wù)器將根據(jù)實(shí)際情況去消減線程或進(jìn)程。|@||@|【小結(jié)】|@| 在worker模式下MinSpareThreads和MaxSpareThreads的最大缺省值分別是75和250。這兩個(gè)參數(shù)對Apache的性能影響并不大,可以按照實(shí)際情況做相應(yīng)調(diào)節(jié)。 而ThreadsPerChild參數(shù)是最影響性能的一個(gè),因?yàn)閣orker模式下所能同時(shí)處理的請求總數(shù)是由子進(jìn)程總數(shù)與ThreadsPerChild之積來決定的。它的最大缺省值是64,如果負(fù)載較大,64也是不夠的。這時(shí)要顯式使用ThreadLimit指令,它的最大缺省值是20000。。注意,不要把這兩個(gè)值設(shè)得太高,如果超過系統(tǒng)的處理能力,會使系統(tǒng)很不穩(wěn)定,這個(gè)值最好參考性能測試的結(jié)果來設(shè),同時(shí)子進(jìn)程總數(shù)與ThreadsPerChild之積應(yīng)該略大于MaxClinets。|@||@||@||@|三、配置靜態(tài)文件|@||@|目前基于B/S結(jié)構(gòu)的Web頁面有動態(tài)和靜態(tài)兩種形式,其中動態(tài)頁面需由服務(wù)器的解析器進(jìn)行解析,通常還需連接數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)庫存取操作,最后形成HTML語言信息包反饋給瀏覽者;而靜態(tài)頁面,則無須解析,無須連接數(shù)據(jù)庫,直接反饋給客戶端就可以。 |@||@|這里說的靜態(tài)文件就是指在服務(wù)器端無需進(jìn)行任何處理,就可以直接反饋給瀏覽器的文件,例如:HTML、JS,CSS、JPG、BMP等等。|@||@|將應(yīng)用系統(tǒng)中的靜態(tài)文件配置到Apache服務(wù)器上有幾大好處,首先從客戶角度來看Web頁面的響應(yīng)時(shí)間提高了,其次從系統(tǒng)資源來看應(yīng)用服務(wù)器能專心處理動態(tài)文件,所以充分發(fā)揮了它的效能,再次從系統(tǒng)穩(wěn)定性來看Apache服務(wù)器屏蔽了所有靜態(tài)文件的請求,減輕了應(yīng)用服務(wù)器的壓力從而降低了由大訪問量帶來宕機(jī)的風(fēng)險(xiǎn)。|@||@|【配置示例1】|@||@|Alias /images/ "/home/hrdc/images/"|@||@||@||@|Options Indexes FollowSymLinks|@||@|AllowOverride None|@||@|Order allow,deny|@||@|Allow from all|@||@||@||@|#配置圖片請求映射,與CSS,JS的配置類似。|@||@||@||@||@||@| WebLogicCluster 192.64.96.18:8018,192.64.96.11:8011|@||@| MatchExpression /file/*|@||@| MatchExpression *.jsp|@||@| MatchExpression *.jsf|@||@| MatchExpression *.rtf|@||@| MatchExpression *.xls|@||@| MatchExpression *.doc|@||@| MatchExpression /console*|@||@||@||@||@||@|#配置Webloig模塊中的參數(shù)。|@||@||@|【關(guān)鍵參數(shù)說明】|@||@|l VirtualHost|@||@|虛擬主機(jī)。|@||@|【說明】|@||@|在這個(gè)參數(shù)內(nèi)可以模仿一個(gè)Web服務(wù)配置眾多參數(shù),即在和中配置一組僅作用于特定虛擬主機(jī)的參數(shù)。|@||@|示例|@||@||@|ServerAdmin ? hrdc.zh@ccb.cn |@|DocumentRoot /home/hrdc|@|ServerName ? hrdc.ccb.cn|@|ErrorLog logs/host.foo.com-error_log|@|TransferLog logs/host.foo.com-access_log|@| |@||@||@|注意:每個(gè)虛擬主機(jī)必須對應(yīng)不同的IP地址、端口或是不同的主機(jī)名。|@||@|中定義的監(jiān)聽地址只代表虛擬主機(jī)并不是指定Apache服務(wù)的監(jiān)聽地址。指定Apache監(jiān)聽地址的參數(shù)則是Listen。|@||@|l IfModule|@||@|根據(jù)指定的模塊是否啟用為條件來決定是否進(jìn)行處理。|@||@|【語法】|@||@| ... |@||@|【說明】|@||@|在該參數(shù)中配置的表達(dá)式為真的時(shí)候才進(jìn)行處理。如果為假,所有其包含的參數(shù)都將被忽略。|@||@|段中的表達(dá)式可以為以下兩種方式之一來表達(dá):|@||@|· ? ? module |@||@|· ? ? !module |@||@|第一種情況表示,在和之間的配置參數(shù)僅當(dāng)module被載入后才被執(zhí)行。此模塊可以是編譯時(shí)靜態(tài)鏈接的核心模塊或是使用LoadModule指令動態(tài)載入的模塊。第二種情況則表示,僅當(dāng)module沒有載入時(shí)才執(zhí)行參數(shù)內(nèi)的配置處理。|@||@|module可以是模塊的標(biāo)識符或者是編譯模塊時(shí)的文件名。在上面的例子中,mod_weblogic.c就是編譯模塊時(shí)的文件名。|@||@|注意:配置段是可以嵌套的,從而可以實(shí)現(xiàn)簡單的多模塊測試。|@||@|【小結(jié)】|@||@|現(xiàn)在再看一下“配置示例1”中關(guān)于Weblogic的配置,其中第一行是用于指定集群中托管服務(wù)器的地址。而下面的“MatchExpression”表示當(dāng)URL匹配上后面的表達(dá)式時(shí),Apache服務(wù)器會把該請求轉(zhuǎn)給Weblogic處理。從配置中可以看出如果有一個(gè)“http://192.23.108.2:8022/images/logon.jpg”這樣的請求,它是不會轉(zhuǎn)發(fā)到Weblogic集群上的。|@|
總結(jié)
以上是生活随笔為你收集整理的mysql illegal mix of_mysql字符集问题:Illegal mix of collations的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何处理高并发写入mysql_如何处理高
- 下一篇: 小程序云函数获取用户昵称_小程序云开发云