Last active
November 28, 2025 08:14
-
-
Save outsinre/69b3ff0a5c35360f29448e5643ca1bad to your computer and use it in GitHub Desktop.
Reuse cosocket after close
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- watch ss -npeat dst "23.193.170.59" or dst "172.217.31.164" | |
| -- ll /proc/<pid>/fd | |
| local inspect = require("inspect") | |
| -- create cosocket | |
| local sock = ngx.socket.tcp() | |
| sock:settimeouts(1000, 15000, 15000) | |
| ngx.say("sock new = ", inspect(sock)) | |
| -- create kernel socket | |
| local ok, err = sock:connect("23.193.170.59", 80) | |
| if not ok then | |
| ngx.say("connection err: ", err) | |
| end | |
| ngx.say("sock to 23.193.170.59:80 = ", inspect(sock)) | |
| ngx.say("sleeping 10s ...") | |
| ngx.sleep(10) | |
| -- create a new kernel socket | |
| ok, err = sock:connect("172.217.31.164", 443) | |
| if not ok then | |
| ngx.say("connection err: ", err) | |
| end | |
| ngx.say("sock to 172.217.31.164:443 = ", inspect(sock)) | |
| ngx.say("sleeping 30s ...") | |
| ngx.sleep(30) | |
| -- only discard kernel socket | |
| ngx.say("closing connection ...") | |
| sock:close() | |
| -- cosocket remains | |
| ngx.say("sock after close = ", inspect(sock)) | |
| ngx.say("sleeping 60s ...") | |
| ngx.sleep(60) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
close()only discard kernel socket (TCP connection) but preserve cosocket itself.setkeepalivepreserve kernel socket (TCP connection) as well.