防 HTTP 劫持解决方案-回源下载
本分整理自《2018腾讯移动游戏技术评审标准与实践案例》,介绍了两种常见的 HTTP 劫持(HTTP-Hijacking)的案例以及对应的解决方法。
本分整理自《2018腾讯移动游戏技术评审标准与实践案例》,介绍了两种常见的 HTTP 劫持(HTTP-Hijacking)的案例以及对应的解决方法。
在 Linux 系统上,当 Python 进程出现 CPU 100% 的问题时,该如何查证?本文介绍了如何使用 gdb, gcore, strace, ltrace 等常见调试工具和具体的查证过程。
Eventlet/Gevent 通过 monkey patch 的方式,让 Python 2 同步代码变成异步协程的方式来运行,但是总有一些意向不到的地方能会 block 住你的整个进程。
生产环境有些服务对耗时非常敏感,所以一般会设置较低的 socket_timeout。在晚上流量高峰期时,就容易出现偶尔的丢包导致的超时异常,我们可以添加适当的重试逻辑来缓解。
使用 Pymongo Cursor 分批查询数据时,偶尔出现 CursorNotFound 异常, 原来是 LoadBalancer HA 机制导致 Cursor 访问到了不同的 mongos 后端。
Redis bigkey 即数据量大的 Key,比如字符串Value值非常大,哈希、列表、集合、有序集合元素多等。由于其数据大小远大于其他Key,容易造成内存不均、超时阻塞、网络流量拥塞等一系列问题。
Redis 通过长连接 block 方式订阅事件通知,如果连接异常断开导致半开连接,那么客户端将无法感知,永远不会收到事件通知。Redis-py 可以通过设置 keepalive 选项避免类似问题。
使用 redis-py 访问 Redis Sentinel 时,要随机打乱 Sentinel 地址,否则客户端所有连接都集中到相同 Sentinel,很容易触>发 maxclients限制引起业务异常。
Python 是一个简洁优雅的高级编程语言,它容易上手的同时,也隐藏了一些难以理解和甚至反人类直觉的坑。本文列出一些我们线上代码实际遇到过的一些编码问题。