-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于Skynet引入包后未使用的问题。 #628
Comments
无法重现,建议在能重现的环境仔细找问题。 |
我在系统的/var/log/debug日志文件内发现很多类似下列信息的日志 Apr 26 15:10:32 localhost kernel: sonewconn: pcb 0xfffff80011202188: Listen queue overflow: 193 already in queue awaiting acceptance (5227 occurrences) 请问是否与此相关? |
这个是/var/log/message日志的内容: 这个是刚刚新启动后压测时突然的core dump!gdb 调试core 进去内容如下: root@localhost:~/skynet # gdb skynet skynet.core 上次提issues提到这个可能会是一个double free,但是现在未引用其它第三方包也有这个问题? |
double free 是很容易查的,先查出来再说。不要一个问题没解决就去看下一个。 |
@cloudwu 找到问题所在,是系统优化的问题!系统限制导致进程被kill掉了。 |
watchdog代码:
`local skynet = require "skynet"
local socket = require "socket"
skynet.start(function()
local id = socket.listen("",8080)
socket.start(id,function(fd,addr)
local agent = skynet.newservice "agent"
skynet.send(agent,"lua","SOCKET",fd,addr)
socket.abandon(fd)
end)
end)`
服务端agent代码:
`local skynet = require "skynet"
local socket = require "socket"
local mysql = require "mysql" -- 仅导入从未使用
local CMD = {}
function CMD.SOCKET(fd,addr)
socket.start(fd)
while true do
end
skynet.start(function()
skynet.dispatch("lua",function(,,cmd,...)
local func = assert(CMD[cmd])
if type(func) == "function" then
func(...)
end
end)`
客户端代码(python):
from gevent import socket def start(): while 1: try: s = socket.socket() s.connect(("192.168.40.2",8080)) except: pass finally: s.close start()
测试操作系统:FreebSD 10.3 VMware
CPU:4C4T
内存:2G
经过一段时间压测发现,skynet 会莫名其妙dowm掉!
由于水平有限,gdb调试skynet无法发现问题所在。
但是发现的只要启动的agent service有require一个包并且未使用,就会出现这个问题。
The text was updated successfully, but these errors were encountered: