2013-01-23 9 views
2

Lighttpd와 함께 Lua FASTCGI를 사용하고 있습니다. 루아 스크립트는 웹에 노출되는 C API를 감싸는 얇은 래퍼입니다. 문제는 Ajax 호출이 (병렬로 실행되는 대신) 서버 측에서 하나씩 실행된다는 것이며 너무 많은 시간이 걸린다는 점입니다. 일부 Ajax 호출은 최대 10 초가 걸리며 호출이 실행되는 동안 브라우저는 데이터를 업데이트 할 수 없습니다.Lighttpd, Lua, WSAPI 느린 Ajax 호출

Lighttpd에서 서버 스레드 수를 늘려 보았지만 Lighttpd에서 권장하지 않습니다. 여러 Ajax 호출을 서버 측에서 병렬로 실행하는 방법을 모르겠습니다.

답변

1

lighttpd를 병렬로 많은 요청을 처리 할 수 ​​있지만 루아 된 FastCGI 것은 아마 할 수 없습니다. 따라서 lighttpd 작업자의 수를 늘리지 마십시오. 대신 lua 작업자 수를 늘리거나 lua 백엔드가 동시에 여러 요청 (coroutines 사용)을 처리하도록 만드십시오.

+0

나는 공동 루틴을 제공 할 것이다. 그러나 루아는 기본적으로 멀티 스레딩을 가지고 있지 않다는 것을 알고있다. 그러나 다중 스레딩을 허용하는 Lua Lanes라고하는 라이브러리가 있습니다. – AlexStack

+1

예, 하나의 루아 상태로 멀티 스레딩이 작동하지 않습니다 (루틴은 도움이되지 않습니다); 하나의 os 쓰레드에서 동일한 상태의 다중 루아 "쓰레드"(coroutines)를 실행하는 것이 가능해야하며,해야 할 일이있을 경우에만 "쓰레드"를 실행해야합니다. 대부분의 경우 네트워크를 기다리고 있다고 말 했으므로 기다리는 동안 (비동기 코딩, 콜백) 다른 lua "스레드"를 실행하십시오. 또한 다른 os 쓰래드에서 다른 lua 상태를 동시에 실행할 수 있으며, 상태는 lua의 관점에서 아무 것도 공유하지 않습니다. – Stefan