今天想對牛客網進行一個項目總結,隨便點了幾個功能,測試發帖功能的時候,沒有發帖成功,頁面卡主了,進入到服務器中查看項目日志:
略過了許多看不懂的報錯之后,看到了幾行看得懂的報錯信息,內容如下圖片所示,提示'Topic publish not present in metadata after 60000ms'發送失敗。
因為我發帖之后會把帖子也往Elasticsearch中也存一份,這其中是通過kafka來傳遞這個存儲事件,事件的topic就叫 ‘publish’, 既然這里出現了發送失敗的異常,很有可能是kafak掛掉了。
通過
查看kafka的所有主題
來判斷kafka是否正常運行
,發現連不上broker,
報錯了
bin/kafka-topics.sh --list --bootstrap-server localhost:9092;
根據這個報錯提示,應該就是kafka沒有啟動。所以得出原因應該是kafka掛了,導致發送消息事件失敗,從而導致發帖異常。
解決方案:
既然掛了那就重啟唄,但是
啟動kafka提示'cannot allocate memory'意思是不能分配內存, 還附帶了一個錯誤日志報告的文件路徑。
// Java運行時環境的內存不足,無法繼續運行。 ## There is insufficient memory for the Java Runtime Environment to continue. // 1073741824剛好是1G, 這句話的意思是本機內存分配未能為提交保留內存分配1G內存。 # Native memory allocation (malloc) failed to allocate 1073741824 bytes for committing reserved memory.
cd bin
./kafka-server-start.sh ../config/server.properties
cd bin
./kafka-server-start.sh -daemon ../config/server.properties