从两周前开始,我就遇到了一个奇怪的问题。我有一个在GAE Python (服务器端)上运行的系统,有100个餐馆和1000个用户工作没有问题,但是突然之间,自从两周前,每天的高峰时间,任务队列中的任务在开始时经历了很长的延迟,两周前只有1到2秒,现在是15到60秒,影响了用户体验和可用性。我必须使用taskqueue修改所有代码,并将它们替换为对urlfetch request async的调用,而无需等待rpc (在一些客户中测试成功)。最糟糕的是,当将任务添加到队列中时,它们会导致在高峰时间(超过100QPS)的事务超过123个错误,每天损失50到1000个请求(从每天300.000个请求到没有问题)。任务和我的进程非常快,它们只持续50ms到3秒,不会更长,但我收到了很多60000ms甚至更多的“边缘”任务,从来没有执行过,甚至在没有启动的情况下就被取消了(我在每个从未执行的任务/进程的非常乞求的时候都有logging.debug消息)。我有2个空闲的实例和所有的设置,当等待延迟超过500ms时,可以不受限制地增加实例。我的实例启动时间只有1秒,启动时没有特殊的过程。我有6个模块,独立的任务模块,问题是影响到调用task.add将任务添加到存储桶中的模块(而不是执行任务的模块)。我做了这个论坛和谷歌文档中提出的所有更改,以避免数据存储争用,我还停用了日志,我使用了大量的memcache,我将F1实例更改为F2,但此错误仍在继续。它是两周前出现的。我已经运行我的应用程序一年半了,没有任何问题,然后这个问题突然出现了。
有没有人遇到过同样的问题,在这种情况下,你有什么建议吗?请注意,我的代码在一年中工作得很好,这个问题是从两周前开始出现的,用户数量在增长,但并不是很多,两周前是850个用户,现在是1.000个,所以我认为这不是一个规模问题。我的进程是veru高效和快速的。我有3年的GAE Python编程经验和30年的TI编程经验,这对我来说非常奇怪,可能与平台变化有关。
这是我的module.yaml标准配置:
runtime: python27
api_version: 1
instance_class: F2
threadsafe: true
automatic_scaling:
min_idle_instances: 2
max_idle_instances: automatic
min_pending_latency: 10ms
max_pending_latency: 500ms
max_concurrent_requests: 20
这是taskqueue配置(我有10个队列,每个队列有10个餐厅)
- name: TaskRegOr00
rate: 10/s
bucket_size: 100
发布于 2015-12-03 13:30:25
https://stackoverflow.com/questions/34034717
复制