0

There is following nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 4096;
        multi_accept on;
}

http {
        autoindex off;

        output_buffers 1 8m;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;

        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

I checked this with strace and nginx used a lot of write syscall, not sendfile syscall

I ran strace for all nginx workers with the following command: strace -p {ngx1} -p {ngx2} .... -e sendfile

And... There is no any output, even if I downloaded some file

I've run strace with simple C programm, witch included sendfile call and I intercepted this call in output

  • If you're using TLS you might be looking for the [wrong system call](https://www.nginx.com/blog/improving-nginx-performance-with-kernel-tls/). – tadman Aug 22 '23 at 18:09
  • One important thing: I use nginx v 1.14.0. About OS: Ubuntu 18.04 on the 4.15.0-91 kernel – Vladislav Eganov Aug 22 '23 at 18:29
  • Sure, not really a factor here. TLS means `sendfile` won't work. – tadman Aug 22 '23 at 18:30
  • 1
    Oh... It's really good point, thank you man! – Vladislav Eganov Aug 22 '23 at 18:33
  • I'd trust Nginx to do the most efficient thing possible as in my experience it is hard to beat the performance of Nginx when it comes to HTTP or HTTPS. It may be that `sendfile` or its other equivalents are not necessarily the best choice, and Nginx has a solution that works even better. In the here and now that might be the kTLS `sendfile` function. – tadman Aug 22 '23 at 18:49

0 Answers0