一 同步且非阻塞的底层SDK:cosocket
说明: 本'篇章'只是对'cosocket'常用话API的汇总,并'没有'实际案例加以'辅证'
场景: 许多'单机版'的中间件都是基于'cosocket'做的二次开发
OpenResty 的核心和精髓 cosocket
① coscoket常用的指令
个人建议: '初始'的时候可以先'不调整',先使用'默认值',后续再'调优'
- lua_socket_connect_timeout
- lua_socket_send_timeout
- lua_socket_send_lowat
- lua_socket_read_timeout
- lua_socket_buffer_size
- lua_socket_pool_size
- lua_socket_keepalive_timeout
- lua_socket_log_errors
② TCP cosocket ngx.socket.tcp
- bind
- connect
- setclientcert
- sslhandshake
- send
- receive
- close
- settimeout
- settimeouts
- setoption
- receiveany
- receiveuntil
- setkeepalive
- getreusedtimes
备注: patterm遇到'什么情况'关闭连接
③ connect
'前置': tcpsock = ngx.socket.tcp()
案例1: '域名'形式
案例2: 'unix socket'
案例3: settimeout method 比'lua_socket_connect_timeout' directive '优先级'高
最后: '可选 table'解读 --> '了解即可'
Nginx TCP backlog 分析优化和性能相关经验汇总
Nginx 压测方法论和性能指标
Nginx 优化中在 Nginx 侧 和 Linux 系统侧必须要调整优化的参数详细和 最佳推荐配置
upstream 的 max_fails 和 fail_timeout 指标和实战经验
④ 非阻塞调用
遗留: 通过'memecached.lua'来学习'cosocket'
路径: /usr/local/openresty/lualib/resty/memcached.lua
⑤ ngx.req.socket
说明: 获取'请求'的tcp连接,将tcp连接'包装'成一个cosocket对象
⑥ 关于ssl握手
说明: 后续深入理解'tsl/ssl'再回头探究
⑦ UDP cosocket ngx.socket.udp
⑧ cosocket注意事项
遗留: 操作系统的socket'缓冲区'理解
正则转义事项