标签: lighttpd

集成CherryPy Web框架,SQLAlchemy会话和lighttpd以提供高负载Web服务的最佳实践

我正在开发一个支持lighttpd的CherryPy FastCGI服务器,其设置如下,以便在CherryPy控制器中使用ORM SQLAlchemy会话.然而,当我运行压力测试与约500回路14个并发请求,它开始给错误,如AttributeError: '_ThreadData' object has no attribute 'scoped_session_class'open_dbsession()AttributeError: 'Request' object has no attribute 'scoped_session_class'close_dbsession()一段时间后.错误率总共约为50%.

只有当我在lighttpd后面运行服务器时才会发生这种情况,而不是直接运行时cherrypy.engine.start().确认connect()不会引发异常.

我也尝试将scoped_sessionto 的返回值赋予GlobalSession(就像在这里一样),但是它给出了错误UnboundExceptionError和其他SA级错误.(并发:10,循环:1000,错误率:16%.即使直接运行也会发生.)

有一些可能的原因,但我缺乏足够的知识来选择一个.
1. start_thread在FastCGI环境下订阅是否不可靠?它似乎open_dbsession()在之前被调用connect()
2.是否cherrypy.thread_data因某种原因被清除?

服务器代码

import sqlalchemy as sa  
from sqlalchemy.orm import session_maker, scoped_session

engine = sa.create_engine(dburi, strategy="threadlocal")  
GlobalSession = session_maker(bind=engine, transactional=False)

def connect(thread_index):  
    cherrypy.thread_data.scoped_session_class = scoped_session(GlobalSession)

def open_dbsession():  
    cherrypy.request.scoped_session_class = cherrypy.thread_data.scoped_session_class

def close_dbsession():  
    cherrypy.request.scoped_session_class.remove()


cherrypy.tools.dbsession_open …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy lighttpd cherrypy

6
推荐指数
1
解决办法
4332
查看次数

有关Lighttpd for Windows的问题

我使用lighty for windows,是的,我知道它不是linux,但atm只能承受本地主机,这使我可以做很多学习和练习我的网络技能.

我知道fast-cgi,在Windows上不起作用,但我想知道还有什么其他方法来提高性能?

此外,我想知道如何隐藏所有那些出现的lightpd.exe窗口/盒子,每次任何人或机器人访问该网站...可以从后台运行lighttpd吗?我正在运行它作为服务,这很好......

但总而言之,为什么窗户上轻微的支持呢?

我真的可以少关心另外一个关于为什么一切都应该在linux或windows上的讲座......这个讨论真的是浪费时间......我和你的...

如果您有一些有用的信息,我肯定希望听到它.

我想我是其中一个人,他们总是想学习如何改进事物,这对我来说就像一种药物,在性能上勉强消耗掉任何百分比......

例如,我添加了一个子域名,因为yslow喜欢子域托管图像,css和javascript ...

我真的很喜欢轻盈,只希望我不是那里唯一一个......在Windows上使用它...而且所有窗户网站的灯都似乎已经死了......或者被遗忘......

感谢您的时间..

-Craig

php windows fastcgi lighttpd

6
推荐指数
1
解决办法
4932
查看次数

为什么Django fcgi会死?我该怎么知道?

我在Linux上使用fcgi和Lighttpd运行Django.每隔一段时间(大约每天一次)服务器就会死掉.我正在使用Django,Python和Lighttpd的最新稳定版本.

我唯一能想到的是我的程序打开了很多文件并执行了很多外部进程,但我很确定这方面的内容是不漏水的.

查看错误和访问日志,没有任何异常情况发生(即负载不高于正常值).在那些我有Python例外的情况下,这些已经出现在error.log中,但是当这次崩溃发生时,我什么也得不到.

有没有办法找出这个过程为何死亡?没有将记录语句放在每一行上?显然我无法重现这一点,所以我不确切知道在哪里看.

编辑

这是django过程即将消亡.我正在运行服务器manage.py runfcgi daemonize=true method=threaded host=127.0.0.1 port=12345

python crash django logging lighttpd

6
推荐指数
1
解决办法
844
查看次数

lighttpd + perl + mojolicious =?

mojolicious在lighttpd网络服务器下工作吗?怎么配置?我需要设置FastCGI吗?这是我第一次使用lighttpd.

perl fastcgi lighttpd mojo mojolicious

6
推荐指数
1
解决办法
1423
查看次数

6
推荐指数
1
解决办法
8083
查看次数

如何处理node.js/express中的相对路径?

我在node.js写了一个网站并表达了.现在我配置lighttpd以使用带有子目录的node.js服务器:

$HTTP["url"] =~ "^/app/" {
  proxy.server  = ( "" => ( (
                              "host" => "127.0.0.1",
                              "port" => 3000
                            ) )
                  )
}
Run Code Online (Sandbox Code Playgroud)

当我打开时,http://localhost/app/我得到错误404,因为我写了这样的东西:

app.get('/', function (req, res){
  res.render('index');
});
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来修改这些行,如:

var relPath = '/app';

app.get(relPath + '/', function (req, res){
  res.render('index');
});
Run Code Online (Sandbox Code Playgroud)

lighttpd node.js express

6
推荐指数
1
解决办法
5841
查看次数

PHP如何与HTTP服务器交互?(比如lighttpd)

可能重复:
我从未真正理解:什么是CGI?

在lighttpd配置中,我们定义了两个路径(如下所示),其中一个是PHP的二进制文件,另一个是套接字路径.我的问题是,lighttpd在哪一点上获取PHP创建的最终HTML输出?二进制文件是否将输出作为响应提供给lighttpd?或者它是否在另一个地方创建临时文件并且服务器获取它?

fastcgi.server = ( ".php" => ((
                     "bin-path" => "/usr/bin/php-cgi",
                     "socket" => "/tmp/php.socket"
                 )))
Run Code Online (Sandbox Code Playgroud)

php lighttpd

6
推荐指数
1
解决办法
564
查看次数

如何在使用Lighttpd和Fast-CGI时显示PHP错误?

我使用FastCGI运行Lighttpd网络服务器,网络服务器不输出PHP解析错误.

我的php.ini文件有以下设置:

error_reporting = E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
html_errors = On
Run Code Online (Sandbox Code Playgroud)

我在我的PHP脚本中启用错误输出以进行开发(对于其他环境具有冗余):

error_reporting( E_ALL );
ini_set( 'display_errors', 1 );
ini_set( 'html_errors', 'On' );
Run Code Online (Sandbox Code Playgroud)

大多数错误输出正常.解析错误没有.下面是抛出解析错误的示例代码.Lighttpd网络服务器不输出错误,但是从命令行执行时,因为它没有使用FastCGI.(注意缺少的连接运算符):

<?php echo 'foo' 'bar'; ?>
Run Code Online (Sandbox Code Playgroud)

我发现如果我display_errors = On在php.ini中设置然后使用FastCGI和Lighttpd正确解析错误输出,但是我不能在我的PHP脚本中使用它来关闭它们ini_set( 'display_errors', 0 ).

我希望能够在开发它时在我的应用程序中显示这些,并且能够在不更改php.ini配置的情况下关闭它们进行生产.使用FastCGI时,我的PHP应用程序中无法执行此操作吗?

php runtime-error fastcgi lighttpd syntax-error

6
推荐指数
1
解决办法
8009
查看次数

lighttpd配置从一个域代理/重写到另一个域

我需要在lighttpd上设置代理/重写!

我有server1,它通过http 2不同的web应用程序路径提供服务:

* http://server1/path1
* http://server1/path2
Run Code Online (Sandbox Code Playgroud)

另外,我在server1前面有lighttpd服务器

我想在lighttpd上设置重写和/或代理,以便2条路径中的每条路径都可以作为不同域上的根路径:

* requests to http://server2.com/* are proxied/rewrited to http://server1/path1/*
* requests to http://server3.com/* are proxied/rewrited to http://server1/path2/*
Run Code Online (Sandbox Code Playgroud)

重要:

  • server2.com和server3.com 只能通过http访问server1
  • 重定向不是选项,server2.com和server3.com的用户不应该知道实际的Web应用程序是从server1的不同路径提供的.

可能吗?

mod-rewrite lighttpd mod-proxy

6
推荐指数
1
解决办法
5722
查看次数

lighttpd:禁用 CGI 缓冲

有没有办法阻止 lighttpd 将 POST 缓冲到 CGI 可执行文件?

在我看来,所有请求在转发到 CGI 可执行文件之前都已完全缓冲在磁盘上,这使我无法以基于流的方式处理输入。

澄清一下,我只是在谈论转发到标准输入上的 CGI 可执行文件的请求;我已经验证了响应没有像那样缓冲,并且流输出确实是可能的。

cgi lighttpd

6
推荐指数
1
解决办法
920
查看次数