I've just finished converting from nginx/radosgw to tengine/radosgw, and it's fixed all the weird issues I was seeing (uploads failing, random clock skew errors, timeouts).

The problem with nginx and radosgw is that nginx insists on buffering all the uploads to disk. This causes a significant performance hit, and prevents larger uploads from working. Supposedly, there is going to be an option in nginx to disable this, but it hasn't been released yet (nor do I see anything on the nginx devel list about it).

tengine ( http://tengine.taobao.org/ ) is an nginx fork that implements unbuffered uploads to fastcgi. It's basically a drop in replacement for nginx.

My configuration looks like this:

server {
        listen 80;

        server_name *.rados.test rados.test;

        client_max_body_size 10g;
        # This is the important option that tengine has, but nginx does not
        fastcgi_request_buffering off;

        location / {
                fastcgi_pass_header     Authorization;
                fastcgi_pass_request_headers on;

                if ($request_method  = PUT ) {
                  rewrite ^ /PUT$request_uri;
                }
                include fastcgi_params;

                fastcgi_pass unix:/path/to/ceph.radosgw.fastcgi.sock;
        }

        location /PUT/ {
                internal;
                fastcgi_pass_header     Authorization;
                fastcgi_pass_request_headers on;

                include fastcgi_params;
                fastcgi_param  CONTENT_LENGTH   $content_length;

                fastcgi_pass unix:/path/to/ceph.radosgw.fastcgi.sock;
        }
}


if anyone else is looking to run radosgw without having to run apache, I would recommend you look into tengine :)
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to