我在OpenShift下运行了一个web.py应用程序并启用了扩展。 HAProxy进程不断通过HTTP 1.0检查索引文档以查看我的应用程序是否已启动。例如,日志看起来像:
==> python/logs/appserver.log <==
127.2.1.129 - - [2013-12-25 13:32:09] "GET / HTTP/1.0" 200 7297 1.240403
127.2.1.129 - - [2013-12-25 13:32:12] "GET / HTTP/1.0" 200 7297 0.676904
127.2.1.129 - - [2013-12-25 13:32:15] "GET / HTTP/1.0" 200 7297 1.421824
127.2.1.129 - - [2013-12-25 13:32:18] "GET / HTTP/1.0" 200 7297 0.730807
127.2.1.129 - - [2013-12-25 13:32:21] "GET / HTTP/1.0" 200 7297 1.153252
127.2.1.129 - - [2013-12-25 13:32:24] "GET / HTTP/1.0" 200 7297 0.828387
127.2.1.129 - - [2013-12-25 13:32:28] "GET / HTTP/1.0" 200 7297 1.390523
127.2.1.129 - - [2013-12-25 13:32:31] "GET / HTTP/1.0" 200 7297 0.964495
127.2.1.129 - - [2013-12-25 13:32:35] "GET / HTTP/1.0" 200 7297 2.574379
127.2.1.129 - - [2013-12-25 13:32:39] "GET / HTTP/1.0" 200 7297 2.011549
这是问题所在。对于每个请求,我的应用程序都在创建一个单独的会话实例我正在使用DiskStore进行会话,因此为每个请求创建了一个单独的文件,我很快就遇到了OpenShift的80,000文件限制(大约3天左右不断创建这样的会话)。奇怪的是我的索引getter根本没有使用或访问会话变量。事实上,我已经尝试将其更改为只返回“Hello World”,并且对象仍然每2-5秒创建一次。
我需要A)限制HAProxy测试我的网站的频率,或更理想的B)不为每个连接创建会话
有什么想法吗?我在主应用程序文件的顶部有一个非常标准的web.py会话初始化程序(不在任何方法中):
session = web.session.Session(app, web.session.DiskStore(os.path.join(curdir,'sessions')), initializer={'request_token': '', 'request_token_secret': ''})
答案 0 :(得分:1)
您可以将HAProxy配置更改为指向不创建会话的运行状况检查端点。
这可以通过编辑 haproxy / conf / haproxy.cfg 文件来完成,查找选项httpchk GET / 行,它位于文件底部。
如果将其更改为指向另一个不创建会话文件的URL端点,则应避免此问题。
我从https://www.openshift.com/forums/openshift/war-deployment-behind-haproxy
得到了这个想法答案 1 :(得分:-1)
我想只删除旧会话。不知道为什么他们没有为你清理。
编辑:
我的意思是,让您的应用程序清理旧会话。