World: r3wp
[!Cheyenne] Discussions about the Cheyenne Web Server
older newer | first last |
Graham 7-May-2010 [8169] | If you are serving multiple virtual sites and using stunnel, can you have a certificate for each virtual domain? |
Dockimbel 8-May-2010 [8170x2] | AFAIK, a certificate is only valid for one FQDN (http://en.wikipedia.org/wiki/Fully_qualified_domain_name). |
Terry: map! uses a hash map, you would have similar results using hash! in R2. A hash map is as far from a NoSQL database as, IMHO, a NoSQL database is from a RDBMS ;-). | |
Terry 8-May-2010 [8172x3] | Yeah, was seeing if R3 was any faster. |
A hash map is far from a NoSQL DB.. unless you're magic. I have a method that's working fine, now looking for the fastest key/value datastore i can find that's easy to work with. | |
Rebol is promising here.. 10x faster than Redis, but Redis is ready to go, gaining popularity, and open source. | |
Dockimbel 8-May-2010 [8175] | <rant>One thing Cheyenne (and Rebol) needs to do is grow up, and lose Altme as the primary source of communication</rant> AltMe is convenient because almost all Cheyenne users come here for realtime chatting, but I agree on your comment. Adding a web forum to the Cheyenne web site would be a good thing. |
Terry 8-May-2010 [8176] | Doc, how do you think Cheyenne would stack up against Nodejs in benchmarks.. particularly handling 1000s of simulaneous clients? |
Andreas 8-May-2010 [8177x2] | Terry, what Redis usage are you comparing to? |
Same-process R3 map! vs Redis over the network? | |
Terry 8-May-2010 [8179] | redis you're forced over the network, if you coupled map! with Cheyenne, there's no such issue. Which is why Im curious as to Cheyennes benchmarks. in other words, would Cheyenne + map! be faster than say Nodejs + Redis? .. without having to spend the day testing |
Dockimbel 8-May-2010 [8180] | Nodejs: I'm not sure if JS in V8 executes much faster than R2, I guess that V8's JIT would give it a significant raw speed advantage other Cheyenne. On the scalability side, Nodejs will scale much better than Cheyenne for a high number of concurrent connections, just because it can use polling and kernel queues instead of the non-scalable select( ) used in WAIT by REBOL. This is an important aspect if long lasting connections are used. |
Terry 8-May-2010 [8181] | by "long lasting" would that include websockets? |
Dockimbel 8-May-2010 [8182x3] | Yes. |
But for a hundred of concurrent connections, I'm not sure that it would matter that much, both JS and REBOL have their own internals overheads, so I guess that the select( ) bottleneck would really start to show up when reaching several thousands concurrent connections (cf the "C10k problem"). | |
Kaj: "not exists? incoming-dir/:out" => thanks, that was a nasty one! I've commited your fix in svn. | |
Terry 8-May-2010 [8185] | Can Cheyenne handle 10K clients? |
Dockimbel 8-May-2010 [8186x3] | Kaj: "Cheyenne doesn't seem to load its MIME definitions from the standard location on Unix systems, %/etc/mime.types, loading an internal list %misc/mime.types instead" Yes, it was done that way to ensure a common base of mime-types across all OSes. Anyway, I have in my todo list an entry for such a feature. I'm not yet sure if it should be by default, or controled by an explicit option. |
Kaj: "From earlier messages here, it was my understanding that Cheyenne on Linux can run its UniServe taskmaster processes under a non-root user account by enabling 'userdir in the modules and 'user and 'group in the globals. However, when I do that, all of Cheyenne is still running as root. The designated user and group exist. What else do I need to do?" It was working last time I've checked. What Cheyenne version are you using? Have you remove all the log files generated by Cheyenne that are own by root before testing? Did you tried with other combinations of user and group? | |
Terry: short anwser: yes and no. Long answer: you should be more precise in your question. I guess that you're asking if a *single* Cheyenne instance can handle 10k concurrent connections on long lasting communications (HTTP keepalive or web sockets), the answer is : I don't know, I never tested that case. My guess is that if all clients are not sending requests simultaneously, Cheyenne should be able to handle it, but with a probably significant latency in the responses. For a real world web site, when dealing with short lasting requests, having a continuous load of 10k connections would mean that you're having a few million hits per hour making your web site one of the top 50 sites in the world, giving you enough money to invest in a huge cluster of servers to nicely handle the load with dozens of Cheyenne's instances ;-). | |
Terry 8-May-2010 [8189x2] | Can I cluster Cheyenne? |
Just kidding :) | |
Henrik 8-May-2010 [8191] | has anyone tried putting a webcache like Varnish in front of Cheyenne? |
Terry 8-May-2010 [8192x2] | I'm only concerned with latency with 100 clients... my current system uses SQL and bogs down nastily while I do analysis on 4000 items and their properties (sorting, filtering, finding etc) I/O Costs: L1: 3 cycles L2: 14 cycles RAM: 250 cycles DISK: 41,000,000 cyles NETWORK: 240,000,000 cycles |
Doc, you should edit this wikipedia article as well http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers | |
Dockimbel 8-May-2010 [8194x2] | You can dispatch load between several Cheyenne instances very easily using tools like nginx. |
Lightweight web servers are Web servers which have been designed to run with very small resource overhead because of hardware, environment, or simply for the challenge of it. According to this definition and the example of target devices (Calculator, C64, 64KB devices), I don't think that Cheyenne qualifies due to REBOL's quite large memory footprint. | |
Kaj 8-May-2010 [8196x2] | Terry, why don't you add Cheyenne to that Wikipedia page? A project is not supposed to comment on its own product on Wikipedia |
There are several servers in there that are not tiny weight, pretty much in the ball park of Cheyenne, if you were look at code size and handling | |
Dockimbel 8-May-2010 [8198] | Graham: a few links about your question: http://en.wikipedia.org/wiki/Transport_Layer_Security#Support_for_name-based_virtual_servers http://en.wikipedia.org/wiki/Server_Name_Indication SNI is in stunnel's todo list: http://stunnel.mirt.net/?page=todo_sdf |
Kaj 8-May-2010 [8199] | It also says that NginX supports it, so that may be a better option than STunnel |
Graham 8-May-2010 [8200x3] | Definitive information! Great ... I shall look at NginX |
http://www.nginx.org/en/docs/http/configuring_https_servers.html at the bottom talks about SNI support | |
Anyone got some quick instructions on how to use Nginx as a proxy for Cheyenne? | |
Oldes 9-May-2010 [8203x2] | I use something like this in my nginx config: location ~ \.(rsp|cgi)$ { proxy_pass http://lucya.desajn.web:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-URI $request_uri; proxy_set_header if-modified-since $http_if_modified_since; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } |
I use nginx as a frontend server and cheyenne as a backend where Cheyenne ca cretate static pages served by nginx... My motto for thic combo is: where west meets east as its American-Russian connection:) | |
Graham 9-May-2010 [8205] | Thanks... now anyone setup https with SNI ? :) |
Oldes 9-May-2010 [8206] | I never tryied... but maybe you can try something like that http://kbeezie.com/view/configuring-sni-with-nginx/ |
Graham 9-May-2010 [8207] | ok .. thanks |
Dockimbel 9-May-2010 [8208] | Oldes: would it help if X-Real-IP header was used by Cheyenne to store the real client IP in HTTP logs? I was thinking about addind an option to tell Cheyenne that a HTTP header is carrying the real IP. |
Robert 9-May-2010 [8209] | I get an "confirm" error from a RSP page that tries to delete a local file. How can I do this? |
Dockimbel 9-May-2010 [8210] | What do you get when trying to delete this file from console launched with the same uid/gid than Cheyenne? |
Robert 9-May-2010 [8211x2] | I start cheyenne as root (not recommended I know but...). So this shouldn't be a problem. |
I have the feeling that the security dialog is jumping in... but I use the Linux SDK version. | |
Dockimbel 9-May-2010 [8213] | Are you using your own encapped Cheyenne binary? |
Kaj 9-May-2010 [8214x5] | I found a series of problems due to which switching to a non-root user and group doesn't work |
The primary reason was that, although the 'library interface component was supposed to be included in R2.7.7, it is in View but not in Core, at least in the Linux version | |
This makes Cheyenne run with a primitive configuration without an advanced system interface | |
I asked in RebDev to fix this in R2.7.8 | |
Trying with View only works when the window environment is started, even when X11 is installed on a machine, so this is game over for headless servers | |
older newer | first last |