我有一个网页,其中后端使用Go语言编写并在Ubuntu上运行,并且经过一定天数和活动(例如发条)后,goroutine将引发“恐慌”并开始出现502个代理错误。我在Go语言中遇到的错误是“打开的文件太多”。
经过一些研究,我觉得我已经将问题缩小到包含太多“打开文件描述符”。我阅读了不同的建议解决方案,这些解决方案似乎对不同的人有不同的结果。没关系,但是如果我想实时查看这些所谓的打开文件描述符,以便实际上可以查明这些“文件”的内容,我将如何处理?我之所以这样问是因为,我想看看我是否可以进一步缩小范围(可能是未正确关闭的MySQL套接字,也可能是OS文件),而不是猜测我的Go程序的哪些部分导致了此问题关闭不正确等)
答案 0 :(得分:2)
您可以使用lsof
命令(Linux)“列出打开的文件”。将有很多输出,因此最好使用选项过滤输出。如果您知道进程的PID,那么lsof -p <PID>
可能会很有用。使用ps
命令查找PID。