今天想对牛客网进行一个项目总结,随便点了几个功能,测试发帖功能的时候,没有发帖成功,页面卡主了,进入到服务器中查看项目日志:
略过了许多看不懂的报错之后,看到了几行看得懂的报错信息,内容如下图片所示,提示'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