由于环境的不同,个人远程服务器上使用的gcc版本比较旧,而本地编译机器使用的操作系统版本又比较高,对应的gcc版本和服务器版本差异比较大,之前测试java程序的时候,还感受不出来运行环境的差异,对系统部署的影响。近期尝试rust写一些小脚本的时候,经常发现本地可以正常跑起来的程序,部署到了远程就无法跑出来了。把两套环境完全搞成一样的,成本又相对比较高。使用Docker进行部署,相对来说又比较复杂,而且远程服务器性能较弱,不太适合直接本地编译,因此需要考虑对rust做静态编译。这里做一下记录。
1 |
|
一些关于Rust使用的记录
env_logger可以通过环境变量传递日志的等级,比如在使用的时候使用了如下的方式初始化日志。那么默认情况下日志为debug等级,如果想把debug调整成info或者error,可以通过如下方式调整
1
2
3
4
5
env_logger::init_from_env(env_logger::Env::new().default_filter_or("debug"));
// 调整日志等级,只要在启动的过程中传入日志等级即可,比如: `RUST_LOG=error ./website `actix_web 可以通过app_data传递一些初始化比较困难的对象,比如数据库的连接池,http的客户端等。大家可以共用,即可统一控制
客户端在使用ab进行流量施压的时候,由于会对服务端发起大量的建联请求(和启动的并发数有关),由于客户端可用的端口有限(
net.ipv4.ip_local_port_range= 32768 65000
) ,同时TIME_WAIT状态的回收时间有限制(net.ipv4.tcp_fin_timeout = 60
) , 导致施压机在发起请求的过程中(尤其在连续发起多个并发请求的情况下),由于端口可用数有限制,导致发起链接耗时增加。为了缓解这种问题,可以考虑TW状态的复用(net.ipv4.tcp_tw_reuse = 1
)