一種服務(wù)器的軟件故障處理方法和裝置的制造方法
【專利摘要】本申請實施例提供了一種服務(wù)器的軟件故障處理方法和裝置,所述方法包括:接收客戶端連接;針對所述客戶端連接,創(chuàng)建第一子進(jìn)程;采用所述第一子進(jìn)程,接收客戶端的請求;當(dāng)故障發(fā)生時,將所述請求保存至指定位置;執(zhí)行保存在所述指定位置的請求,從而可以在保持對外服務(wù)連接不中斷的前提下將程序恢復(fù)到絕對正確的狀態(tài);本方法對應(yīng)用透明,具備完全的通用性,能夠處理任何類型的故障,可以實現(xiàn)通用的故障恢復(fù)效果。
【專利說明】
一種服務(wù)器的軟件故障處理方法和裝置
技術(shù)領(lǐng)域
[0001]本申請涉及信息技術(shù)領(lǐng)域,特別是涉及一種服務(wù)器的軟件故障處理方法和一種服務(wù)器的軟件故障處理裝置。
【背景技術(shù)】
[0002]傳統(tǒng)的網(wǎng)絡(luò)存儲系統(tǒng)采用集中的存儲服務(wù)器存放所有數(shù)據(jù),存儲服務(wù)器成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規(guī)模存儲應(yīng)用的需要,為了解決上述問題,分布式存儲系統(tǒng)便應(yīng)運而生。
[0003]分布式存儲系統(tǒng)是將數(shù)據(jù)分散存儲在多臺獨立的設(shè)備上,利用多臺存儲服務(wù)器分擔(dān)存儲負(fù)荷,有效地提高了系統(tǒng)的可靠性、可用性和存取效率。分布式存儲系統(tǒng)通過相應(yīng)的網(wǎng)絡(luò)服務(wù)器軟件進(jìn)行連接,采用一個進(jìn)程對應(yīng)一個連接的模式,客戶對連接的穩(wěn)定性非常敏感。因此,當(dāng)網(wǎng)絡(luò)服務(wù)器軟件發(fā)生故障時,必須及時排除故障,盡快恢復(fù)系統(tǒng)連接。
[0004]目前,已有技術(shù)中主要采用如下方案對網(wǎng)絡(luò)服務(wù)器的軟件故障進(jìn)行處理:首先替換默認(rèn)的異常信號處理函數(shù),使得故障發(fā)生時程序不會崩潰,然后在異常信號處理函數(shù)中,使用1ngjmpO函數(shù)跳轉(zhuǎn)到程序的非故障區(qū)域,S卩set jmp()處,或者使用throw語句拋出異常,以跳轉(zhuǎn)到合適的catch語句處;最后根據(jù)故障的類型、原因,有針對性地進(jìn)行處理。雖然上述方案可以避免程序在運行時崩潰,也能夠?qū)⒊绦驁?zhí)行位置回退到故障出現(xiàn)之前的位置,但是由于需要根據(jù)故障的原因分類具體處理,使得處理過程十分繁冗,同時容易出現(xiàn)處理不周全的情況。此外,對于某些較嚴(yán)重的故障,也很難直接采用上述方案進(jìn)行處理。
【發(fā)明內(nèi)容】
[0005]鑒于上述問題,提出了本申請實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種服務(wù)器的軟件故障處理方法和相應(yīng)的一種服務(wù)器的軟件故障處理裝置。
[0006]為了解決上述問題,本申請實施例公開了一種服務(wù)器的軟件故障處理方法,包括:
[0007]接收客戶端連接;
[0008]針對所述客戶端連接,創(chuàng)建第一子進(jìn)程;
[0009]采用所述第一子進(jìn)程,接收客戶端的請求;
[0010]當(dāng)故障發(fā)生時,將所述請求保存至指定位置;
[0011 ]執(zhí)行保存在所述指定位置的請求。
[0012]可選地,所述當(dāng)故障發(fā)生時,將所述請求保存至指定位置的步驟包括:
[0013]當(dāng)故障發(fā)生時,停止接收所述請求;
[0014]將所有未完成的請求序列化,獲得序列化數(shù)據(jù);
[0015]將所述序列化數(shù)據(jù)保存至指定位置。
[0016]可選地,所述執(zhí)行保存在所述指定位置的請求的步驟包括:
[0017]創(chuàng)建第二子進(jìn)程;
[0018]采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求。
[0019]可選地,所述采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求的步驟包括:
[0020]采用所述第二子進(jìn)程,判斷所述客戶端連接是否處于故障恢復(fù)狀態(tài);
[0021]若是,則執(zhí)行保存在所述指定位置的請求。
[0022]可選地,所述執(zhí)行保存在所述指定位置的請求的步驟包括:
[0023]獲取所述指定位置的序列化數(shù)據(jù),以恢復(fù)所有未完成的請求;
[0024]執(zhí)行所述所有未完成的請求。
[0025]可選地,所述方法還包括:
[0026]清除所述指定位置的序列化數(shù)據(jù)。
[0027]可選地,所述客戶端連接具有默認(rèn)的信號處理函數(shù)和替換函數(shù),在所述采用所述第一子進(jìn)程,接收客戶端的請求的步驟后,還包括:
[0028]采用替換函數(shù)替換默認(rèn)的信號處理函數(shù)。
[0029]為了解決上述問題,本申請實施例公開了一種服務(wù)器的軟件故障處理裝置,包括:
[0030]第一接收模塊,用于接收客戶端連接;
[0031 ]創(chuàng)建模塊,用于針對所述客戶端連接,創(chuàng)建第一子進(jìn)程;
[0032]第二接收模塊,用于采用所述第一子進(jìn)程,接收客戶端的請求;
[0033]保存模塊,用于在故障發(fā)生時,將所述請求保存至指定位置;
[0034]執(zhí)行模塊,用于執(zhí)行保存在所述指定位置的請求。
[0035]可選地,所述保存模塊包括:
[0036]序列化子模塊,用于在故障發(fā)生時,停止接收所述請求,并將所有未完成的請求序列化,獲得序列化數(shù)據(jù);
[0037]保存子模塊,用于將所述序列化數(shù)據(jù)保存至指定位置。
[0038]可選地,所述執(zhí)行模塊包括:
[0039]第二創(chuàng)建子模塊,用于創(chuàng)建第二子進(jìn)程;
[0040]執(zhí)行子模塊,用于采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求。
[0041 ]可選地,所述執(zhí)行子模塊包括:
[0042]判斷單元,用于采用所述第二子進(jìn)程,判斷所述客戶端連接是否處于故障恢復(fù)狀態(tài);
[0043]執(zhí)行單元,用于在判斷所述客戶端連接處于故障恢復(fù)狀態(tài)時,執(zhí)行保存在所述指定位置的請求。
[0044]可選地,所述執(zhí)行單元包括:
[0045]獲取子單元,用于獲取所述指定位置的序列化數(shù)據(jù),以恢復(fù)所有未完成的請求;
[0046]執(zhí)行子單元,用于執(zhí)行所述所有未完成的請求。
[0047]可選地,所述執(zhí)行模塊還包括:
[0048]清除子模塊,用于清除所述指定位置的序列化數(shù)據(jù)。
[0049]可選地,所述客戶端連接具有默認(rèn)的信號處理函數(shù)和替換函數(shù),所述裝置還包括:
[0050]替換模塊,用于采用替換函數(shù)替換默認(rèn)的信號處理函數(shù)。
[0051]與【背景技術(shù)】相比,本申請實施例包括以下優(yōu)點:
[0052]在本申請實施例中,通過創(chuàng)建第一子進(jìn)程,并由所述第一子進(jìn)程來接收客戶端的請求,當(dāng)故障發(fā)生時,將所有未完成的請求保存至指定位置,然后通過執(zhí)行保存在所述指定位置的請求來恢復(fù)故障前的狀態(tài),從而可以在保持對外服務(wù)連接不中斷的前提下將程序恢復(fù)到絕對正確的狀態(tài);本方法對應(yīng)用透明,具備完全的通用性,能夠處理任何類型的故障,可以實現(xiàn)通用的故障恢復(fù)效果。
[0053]其次,在本申請實施例中,通過采用替換函數(shù)替換默認(rèn)的信號處理函數(shù),避免了程序在故障發(fā)生時的崩潰,使程序重歸可控狀態(tài)。
【附圖說明】
[0054]圖1是本申請的一種服務(wù)器的軟件故障處理方法實施例一的步驟流程圖;
[0055]圖2是本申請的一種服務(wù)器的軟件故障處理方法實施例二的步驟流程圖;
[0056]圖3A?3D是本申請的一種服務(wù)器的軟件故障處理方法各階段的系統(tǒng)狀態(tài)示意圖;
[0057]圖4是本申請的一種服務(wù)器的軟件故障處理裝置實施例的結(jié)構(gòu)框圖。
【具體實施方式】
[0058]為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本申請作進(jìn)一步詳細(xì)的說明。
[0059]參照圖1,示出了本申請的一種服務(wù)器的軟件故障處理方法實施例一的步驟流程圖,具體可以包括如下步驟:
[0060]步驟101,接收客戶端連接;
[0061]所述客戶端連接是指客戶端發(fā)起的針對網(wǎng)絡(luò)服務(wù)器的連接。通常,一個進(jìn)程可以對應(yīng)一個客戶端連接,也可以對應(yīng)多個客戶端連接。
[0062]在本申請實施例中,可以將進(jìn)程構(gòu)造成連接部分與執(zhí)行部分,即“殼”與“核”兩部分,其中,由連接部分即“殼”部分負(fù)責(zé)接收并保持客戶端連接,以及監(jiān)控執(zhí)行部分即“核”部分的運行狀態(tài);“核”部分則負(fù)責(zé)所有實質(zhì)性的服務(wù)工作。
[0063]步驟102,針對所述客戶端連接,創(chuàng)建第一子進(jìn)程;
[0064]當(dāng)客戶端連接達(dá)到后,可以針對所述客戶端連接,創(chuàng)建第一子進(jìn)程。在具體實現(xiàn)中,所述第一子進(jìn)程可以由“殼”部分創(chuàng)建,并由第一子進(jìn)程繼承“殼”部分的客戶端連接狀
??τ O
[0065]在本申請的一種優(yōu)選實施例中,所述針對所述客戶端連接,倉Il建第一子進(jìn)程的步驟具體可以包括如下子步驟:
[0066]子步驟1021,針對所述客戶端連接,調(diào)用fork()函數(shù)創(chuàng)建第一子進(jìn)程。
[0067]在具體實現(xiàn)中,“殼”部分可以調(diào)用forkO函數(shù),以創(chuàng)建第一子進(jìn)程。
[0068]通常,一個現(xiàn)有的進(jìn)程可以通過調(diào)用fork()函數(shù)創(chuàng)建一個新進(jìn)程,由fork()函數(shù)創(chuàng)建的新進(jìn)程被稱為子進(jìn)程(child process),子進(jìn)程與原來的進(jìn)程幾乎是完全相同的進(jìn)程,可以執(zhí)行相同的動作,做完全相同的事。因此,在第一子進(jìn)程被創(chuàng)建后,可以由第一子進(jìn)程繼承“殼”部分工作,以保持與客戶端的連接。
[0069]步驟103,采用所述第一子進(jìn)程,接收客戶端的請求;
[0070]在本申請實施例中,當(dāng)?shù)谝蛔舆M(jìn)程被創(chuàng)建后,還可以在所述第一子進(jìn)程中執(zhí)行“核”部分的工作,即由第一子進(jìn)程接收客戶端的請求,所述請求為讀寫請求。
[0071]步驟104,當(dāng)故障發(fā)生時,將所述請求保存至指定位置;
[0072]通常,CF1IKCentral Processing Unit,中央處理器)能夠發(fā)現(xiàn)程序在執(zhí)行過程中的故障,例如,程序執(zhí)行時,遇到segment fault、divided by O等。
[0073]在本申請實施例中,當(dāng)故障發(fā)生時,可以停止接收客戶端的新的請求,并將所有未完成的請求保存至指定位置的臨時文件夾中,并結(jié)束當(dāng)前進(jìn)程的運行。所述指定位置的臨時文件夾可以是任意的臨時文件,只要子進(jìn)程能夠獲知其存儲位置即可,本申請對此不作具體限定。
[0074]在本申請的一種優(yōu)選實施例中,所述當(dāng)故障發(fā)生時,將所述請求保存至指定位置的步驟具體可以包括如下子步驟:
[0075]子步驟1041,當(dāng)故障發(fā)生時,停止接收所述請求;
[0076]子步驟1042,將所有未完成的請求序列化,獲得序列化數(shù)據(jù);
[0077]子步驟1043,將所述序列化數(shù)據(jù)保存至指定位置。
[0078]在具體實現(xiàn)中,當(dāng)故障發(fā)生時,第一子進(jìn)程可以暫停接收客戶端的新的請求,并將所有未完成的請求序列化,從而得到所有未完成的請求的序列化數(shù)據(jù),并將所述序列化數(shù)據(jù)保存至指定位置的臨時文件夾中。
[0079]序列化(Serializat1n)是一種將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程。在序列化期間,對象將其當(dāng)前狀態(tài)寫入到臨時或持久性存儲區(qū);在此之后,可以通過從存儲區(qū)中讀取或反序列化對象的狀態(tài),重新創(chuàng)建該對象。
[0080]步驟105,執(zhí)行保存在所述指定位置的請求。
[0081]在本申請實施例中,可以通過執(zhí)行在指定位置的臨時文件夾中保存的請求來恢復(fù)故障前的狀態(tài),重新執(zhí)行未完成的請求,并繼續(xù)接受新的請求。
[0082]在本申請的一種優(yōu)選實施例中,所述執(zhí)行保存在所述指定位置的請求的步驟具體可以包括如下子步驟:
[0083]子步驟1051,創(chuàng)建第二子進(jìn)程;
[0084]子步驟1052,采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求。
[0085]在具體實現(xiàn)中,當(dāng)?shù)谝蛔舆M(jìn)程由于故障的發(fā)生而被結(jié)束后,“殼”部分可以通過再次調(diào)用fork()函數(shù)的方式來創(chuàng)建第二子進(jìn)程。根據(jù)fork()函數(shù)的特點可知,第二子進(jìn)程與第一子進(jìn)程具有相同的特性,因此,可以在該位置檢測到存在第一子進(jìn)程遺留的請求時,由第二子進(jìn)程來執(zhí)行在臨時文件夾中保存的未完成的請求,從而恢復(fù)故障前的狀態(tài)。
[0086]在本申請實施例中,所述方法還可以包括如下步驟:
[0087]步驟106,清除所述指定位置的序列化數(shù)據(jù)。
[0088]由于指定位置的臨時文件夾用于保存因故障發(fā)生而保存的未完成的請求,因此,恢復(fù)至故障前狀態(tài)后,可以將所述指定位置的序列化數(shù)據(jù)清除,以便后續(xù)故障發(fā)生時能夠繼續(xù)使用該臨時文件夾。
[0089]在本申請實施例中,通過創(chuàng)建第一子進(jìn)程,并由所述第一子進(jìn)程來接收客戶端的請求,當(dāng)故障發(fā)生時,將所有未完成的請求保存至指定位置,然后通過執(zhí)行保存在所述指定位置的請求來恢復(fù)故障前的狀態(tài),從而可以在保持對外服務(wù)連接不中斷的前提下將程序恢復(fù)到絕對正確的狀態(tài);其次,本方法對應(yīng)用透明,具備完全的通用性,能夠處理任何類型的故障,可以實現(xiàn)通用的故障恢復(fù)效果。
[0090]參照圖2,示出了本申請的一種服務(wù)器的軟件故障處理方法實施例二的步驟流程圖,具體可以包括如下步驟:
[0091]步驟201,接收客戶端連接;
[0092 ]所述客戶端連接是指客戶端發(fā)起的針對網(wǎng)絡(luò)服務(wù)器的連接。
[0093]在本申請實施例中,可以將進(jìn)程構(gòu)造成連接部分與執(zhí)行部分,即“殼”與“核”兩部分,其中,由連接部分即“殼”部分負(fù)責(zé)接收并保持客戶端連接,以及監(jiān)控執(zhí)行部分即“核”部分的運行狀態(tài);“核”部分則負(fù)責(zé)所有實質(zhì)性的服務(wù)工作。通常,一個進(jìn)程可以對應(yīng)一個客戶端連接,或者對應(yīng)多個客戶端連接。
[0094]如圖3A?3D所示,是本申請的一種服務(wù)器的軟件故障處理方法各階段的系統(tǒng)狀態(tài)示意圖。當(dāng)在接收到客戶端連接后,此時系統(tǒng)處于正常運行中,系統(tǒng)實時狀態(tài)如圖3A所示。
[0095]步驟202,針對所述客戶端連接,創(chuàng)建第一子進(jìn)程;
[0096]在本申請實施例中,當(dāng)客戶端連接達(dá)到后,可以針對所述客戶端連接,創(chuàng)建第一子進(jìn)程。
[0097]在具體實現(xiàn)中,所述第一子進(jìn)程可以由“殼”部分通過調(diào)用fork()函數(shù)的方式來創(chuàng)建。
[0098]由于通過fork()函數(shù)創(chuàng)建的子進(jìn)程與原來的進(jìn)程幾乎是完全相同的進(jìn)程,可以執(zhí)行相同的動作,因此,可以由所述第一子進(jìn)程繼承“殼”部分的客戶端連接狀態(tài)。
[0099]步驟203,采用所述第一子進(jìn)程,接收客戶端的請求;
[0100]在本申請實施例中,當(dāng)?shù)谝蛔舆M(jìn)程被創(chuàng)建后,還可以在所述第一子進(jìn)程中執(zhí)行“核”部分的工作,即由第一子進(jìn)程接收客戶端的請求,所述請求為讀寫請求。
[0101]步驟204,采用替換函數(shù)替換默認(rèn)的信號處理函數(shù);
[0102]在本申請實施例中,一個進(jìn)程對應(yīng)一個客戶端連接或者多個客戶端連接,所述進(jìn)程具有默認(rèn)的信號處理函數(shù)和替換函數(shù)。
[0103]通常,程序在故障發(fā)生時會出現(xiàn)崩潰,而崩潰是默認(rèn)的信號處理函數(shù)的行為,因此,采用替換函數(shù)替換默認(rèn)的信號處理函數(shù)可以避免程序在故障發(fā)生時的崩潰,使程序重歸可控狀態(tài)。
[0104]在具體實現(xiàn)中,可以采用SignalO函數(shù)來替換掉默認(rèn)的信號處理函數(shù)。SignalO函數(shù)是一種系統(tǒng)調(diào)用函數(shù),可以用于當(dāng)某種特定的“軟件中斷”發(fā)生時調(diào)用特定的程序。
[0105]步驟205,當(dāng)故障發(fā)生時,將所有未完成的請求序列化,獲得序列化數(shù)據(jù);
[0106]步驟206,將所述序列化數(shù)據(jù)保存至指定位置;
[0107]在本申請實施例中,當(dāng)故障發(fā)生時,第一子進(jìn)程可以暫停接收客戶端的新的請求,并將所有未完成的請求序列化,從而得到所有未完成的請求的序列化數(shù)據(jù),并將所述序列化數(shù)據(jù)保存至指定位置的臨時文件夾中。此外,第一子進(jìn)程還可以通過返回一個特殊的退出代碼給父進(jìn)程即“殼”部分的方式,告知“殼”部分本次異常退出是由于發(fā)生故障導(dǎo)致的。在故障發(fā)生時將所有未完成的請求保存至指定位置的臨時文件夾,以及第一子進(jìn)程在退出服務(wù)后,其系統(tǒng)狀態(tài)分別如圖3B和3C所示。
[0108]步驟207,創(chuàng)建第二子進(jìn)程;
[0109]在具體實現(xiàn)中,當(dāng)?shù)谝蛔舆M(jìn)程由于故障的發(fā)生而被結(jié)束后,“殼”部分可以通過再次調(diào)用forkO函數(shù)的方式來創(chuàng)建第二子進(jìn)程。
[0110]步驟208,采用所述第二子進(jìn)程,判斷所述客戶端連接是否處于故障恢復(fù)狀態(tài);
[0111]在具體實現(xiàn)中,可以通過第一子進(jìn)程返回的特殊的退出代碼獲知第一子進(jìn)程的退出是由于故障導(dǎo)致的,從而確認(rèn)所述客戶端連接處于故障恢復(fù)狀態(tài),可以繼續(xù)執(zhí)行步驟209,執(zhí)行保存在所述指定位置的請求。
[0112]步驟209,執(zhí)行保存在所述指定位置的請求;
[0113]在本申請實施例中,可以通過執(zhí)行在指定位置的臨時文件夾中保存的請求來恢復(fù)故障前的狀態(tài),重新執(zhí)行未完成的請求,并繼續(xù)接受新的請求。此時系統(tǒng)狀態(tài)如圖3D所示。
[0114]在本申請的一種優(yōu)選實施例中,所述執(zhí)行保存在所述指定位置的請求的步驟具體可以包括如下子步驟:
[0115]子步驟2091,獲取所述指定位置的序列化數(shù)據(jù),以恢復(fù)所有未完成的請求;
[0116]子步驟2092,執(zhí)行所述所有未完成的請求。
[0117]在具體實現(xiàn)中,可以首先獲取到在指定位置的臨時文件夾中保存的序列化數(shù)據(jù),通過反序列化操作,恢復(fù)所有未完成的請求,然后由第二子進(jìn)行繼續(xù)執(zhí)行所述所有未完成的請求。
[0118]步驟210,清除所述指定位置的序列化數(shù)據(jù)。
[0119]由于指定位置的臨時文件夾用于保存因故障發(fā)生而保存的未完成的請求,因此,恢復(fù)至故障前狀態(tài)后,可以將所述指定位置的序列化數(shù)據(jù)清除,以便后續(xù)故障發(fā)生時能夠繼續(xù)使用該臨時文件夾。
[0120]需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請實施例并不受所描述的動作順序的限制,因為依據(jù)本申請實施例,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本申請實施例所必須的。
[0121]參照圖4,示出了本申請的一種服務(wù)器的軟件故障處理裝置實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
[0122]第一接收模塊401,用于接收客戶端連接;
[0123]創(chuàng)建模塊402,用于針對所述客戶端連接,創(chuàng)建第一子進(jìn)程;
[0124]第二接收模塊403,用于采用所述第一子進(jìn)程,接收客戶端的請求;
[0125]保存模塊404,用于在故障發(fā)生時,將所述請求保存至指定位置;
[0126]執(zhí)行模塊405,用于執(zhí)行保存在所述指定位置的請求。
[0127]在本申請實施例中,所述保存模塊404具體可以包括如下子模塊:
[0128]序列化子模塊4041,用于在故障發(fā)生時,停止接收所述請求,并將所有未完成的請求序列化,獲得序列化數(shù)據(jù);
[0129]保存子模塊4042,用于將所述序列化數(shù)據(jù)保存至指定位置。
[0130]在本申請實施例中,所述執(zhí)行模塊405具體可以包括如下子模塊:
[0131]第二創(chuàng)建子模塊4051,用于創(chuàng)建第二子進(jìn)程;
[0132]執(zhí)行子模塊4052,用于采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求。
[0133]在本申請實施例中,所述執(zhí)行子模塊4052具體可以包括如下單元:
[0134]判斷單元521,用于采用所述第二子進(jìn)程,判斷所述客戶端連接是否處于故障恢復(fù)狀態(tài);
[0135]執(zhí)行單元522,用于在判斷所述客戶端連接處于故障恢復(fù)狀態(tài)時,執(zhí)行保存在所述指定位置的請求。
[0136]在本申請實施例中,所述執(zhí)行單元522具體可以包括如下子單元:
[0137]獲取子單元5221,用于獲取所述指定位置的序列化數(shù)據(jù),以恢復(fù)所有未完成的請求;
[0138]執(zhí)行子單元5222,用于執(zhí)行所述所有未完成的請求。
[0139]在本申請實施例中,所述執(zhí)行模塊405還可以包括如下子模塊:
[0140]清除子模塊4053,用于清除所述指定位置的序列化數(shù)據(jù)。
[0141]在本申請實施例中,所述客戶端連接還具有默認(rèn)的信號處理函數(shù)和替換函數(shù),所述裝置還可以包括如下模塊:
[0142]替換模塊406,用于采用替換函數(shù)替換默認(rèn)的信號處理函數(shù)。
[0143]對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
[0144]本說明書中的各個實施例均采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
[0145]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請實施例的實施例可提供為方法、裝置、或計算機(jī)程序產(chǎn)品。因此,本申請實施例可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
[0146]本申請實施例是參照根據(jù)本申請實施例的方法、終端設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0147]這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0148]這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0149]盡管已描述了本申請實施例的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請實施例范圍的所有變更和修改。
[0150]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
[0151]以上對本申請所提供的一種服務(wù)器的軟件故障處理方法和一種服務(wù)器的軟件故障處理裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本申請的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。
【主權(quán)項】
1.一種服務(wù)器的軟件故障處理方法,其特征在于,包括: 接收客戶端連接; 針對所述客戶端連接,創(chuàng)建第一子進(jìn)程; 采用所述第一子進(jìn)程,接收客戶端的請求; 當(dāng)故障發(fā)生時,將所述請求保存至指定位置; 執(zhí)行保存在所述指定位置的請求。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)故障發(fā)生時,將所述請求保存至指定位置的步驟包括: 當(dāng)故障發(fā)生時,停止接收所述請求; 將所有未完成的請求序列化,獲得序列化數(shù)據(jù); 將所述序列化數(shù)據(jù)保存至指定位置。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述執(zhí)行保存在所述指定位置的請求的步驟包括: 創(chuàng)建第二子進(jìn)程; 采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求的步驟包括: 采用所述第二子進(jìn)程,判斷所述客戶端連接是否處于故障恢復(fù)狀態(tài); 若是,則執(zhí)行保存在所述指定位置的請求。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述執(zhí)行保存在所述指定位置的請求的步驟包括: 獲取所述指定位置的序列化數(shù)據(jù),以恢復(fù)所有未完成的請求; 執(zhí)行所述所有未完成的請求。6.根據(jù)權(quán)利要求2或3或4或5所述的方法,其特征在于,還包括: 清除所述指定位置的序列化數(shù)據(jù)。7.根據(jù)權(quán)利要求1-5任一所述的方法,其特征在于,所述客戶端連接具有默認(rèn)的信號處理函數(shù)和替換函數(shù),在所述采用所述第一子進(jìn)程,接收客戶端的請求的步驟后,還包括: 采用替換函數(shù)替換默認(rèn)的信號處理函數(shù)。8.一種服務(wù)器的軟件故障處理裝置,其特征在于,包括: 第一接收模塊,用于接收客戶端連接; 創(chuàng)建模塊,用于針對所述客戶端連接,創(chuàng)建第一子進(jìn)程; 第二接收模塊,用于采用所述第一子進(jìn)程,接收客戶端的請求; 保存模塊,用于在故障發(fā)生時,將所述請求保存至指定位置; 執(zhí)行模塊,用于執(zhí)行保存在所述指定位置的請求。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述保存模塊包括: 序列化子模塊,用于在故障發(fā)生時,停止接收所述請求,并將所有未完成的請求序列化,獲得序列化數(shù)據(jù); 保存子模塊,用于將所述序列化數(shù)據(jù)保存至指定位置。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述執(zhí)行模塊包括: 第二創(chuàng)建子模塊,用于創(chuàng)建第二子進(jìn)程; 執(zhí)行子模塊,用于采用所述第二子進(jìn)程,執(zhí)行保存在所述指定位置的請求。11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述執(zhí)行子模塊包括: 判斷單元,用于采用所述第二子進(jìn)程,判斷所述客戶端連接是否處于故障恢復(fù)狀態(tài);執(zhí)行單元,用于在判斷所述客戶端連接處于故障恢復(fù)狀態(tài)時,執(zhí)行保存在所述指定位置的請求。12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述執(zhí)行單元包括: 獲取子單元,用于獲取所述指定位置的序列化數(shù)據(jù),以恢復(fù)所有未完成的請求; 執(zhí)行子單元,用于執(zhí)行所述所有未完成的請求。13.根據(jù)權(quán)利要求9或10或11或12所述的裝置,其特征在于,所述執(zhí)行模塊還包括: 清除子模塊,用于清除所述指定位置的序列化數(shù)據(jù)。14.根據(jù)權(quán)利要求8-12任一所述的裝置,其特征在于,所述客戶端連接具有默認(rèn)的信號處理函數(shù)和替換函數(shù),所述裝置還包括: 替換模塊,用于采用替換函數(shù)替換默認(rèn)的信號處理函數(shù)。
【文檔編號】G06F11/07GK106095606SQ201610407447
【公開日】2016年11月9日
【申請日】2016年6月12日
【發(fā)明人】李慧霸, 張志明, 李樹龍
【申請人】北京三快在線科技有限公司