I’m having an issue with nginx writing to cephfs. Often I’m getting:
writev() “/home/ceph/temp/44/94/1/0000119444” failed (4: Interrupted
system call) while reading upstream
looking with strace, this happens:
write(65, “e\314\366\36\302”…, 65536) = ? ERESTARTSYS (To be
It happens after first 4MBs (exactly) are written, subsequent write gets
ERESTARTSYS (sometimes, but more rarely, it fails after first 32 or
64MBs, etc are written). Apparently nginx doesn’t expect this and
doesn’t handle it so it cancels writes and deletes this partial file.
Looking at the code, I saw it doesn’t handle ERESTARTSYS in any
different way compared to other write errors. Shouldn’t it try to write
same data again for a couple of times before finally giving up and
erroring out? Do you have any suggestions on how to resolve this? I’m
using latest stable nginx.