public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: "Mark Schouten" <mark@tuxis.nl>
To: "Shannon Sterz" <s.sterz@proxmox.com>
Cc: Proxmox Backup Server development discussion
	<pbs-devel@lists.proxmox.com>
Subject: Re: [pbs-devel] Authentication performance
Date: Mon, 06 Jan 2025 19:07:43 +0000	[thread overview]
Message-ID: <em808af812-c25f-4569-8e1c-231663ec413f@d1b4cc0c.com> (raw)
In-Reply-To: <D6GK5TIN2LD4.1AXEF95IHZITS@proxmox.com>


[-- Attachment #1.1: Type: text/plain, Size: 7626 bytes --]

https://bugzilla.proxmox.com/show_bug.cgi?id=6049 has been created for 
this.

Thanks!

—
Mark Schouten
CTO, Tuxis B.V.
+31 318 200208 / mark@tuxis.nl


------ Original Message ------
From "Shannon Sterz" <s.sterz@proxmox.com>
To "Mark Schouten" <mark@tuxis.nl>
Cc "Proxmox Backup Server development discussion" 
<pbs-devel@lists.proxmox.com>
Date 20/12/2024 14:22:18
Subject Re: Re[4]: [pbs-devel] Authentication performance

>On Thu Dec 19, 2024 at 10:56 AM CET, Mark Schouten wrote:
>>  Hi,
>>
>>  We upgraded to 3.3 yesterday, not much gain to notice with regards to
>>  the new version or the change in keying. It’s still (obvioulsy) pretty
>>  busy.
>
>just be aware that the patch i linked to in my last mail has not been
>packaged yet, so you wouldn't see the impact of that patch yet.
>
>>  However, I also tried to remove some datastores, which failed with
>>  timeouts. PBS even stopped authenticating (so probably just working) all
>>  together for about 10 seconds, which was an unpleasant surprise.
>>
>>  So looking into that further, I noticed the following logging:
>>  Dec 18 16:14:32 pbs005 proxmox-backup-proxy[39143]: GET
>>  /api2/json/admin/datastore/XXXXXX/status: 400 Bad Request: [client
>>  [::ffff]:42104] Unable to acquire lock
>>  "/etc/proxmox-backup/.datastore.lck" - Interrupted system call (os error
>>  4)
>>  Dec 18 16:14:32 pbs005 proxmox-backup-proxy[39143]: GET
>>  /api2/json/admin/datastore/XXXXXX/status: 400 Bad Request: [client
>>  [::ffff]:42144] Unable to acquire lock
>>  "/etc/proxmox-backup/.datastore.lck" - Interrupted system call (os error
>>  4)
>>  Dec 18 16:14:32 pbs005 proxmox-backup-proxy[39143]: GET
>>  /api2/json/admin/datastore/XXXXXX/status: 400 Bad Request: [client
>>  [::ffff]:47286] Unable to acquire lock
>>  "/etc/proxmox-backup/.datastore.lck" - Interrupted system call (os error
>>  4)
>>  Dec 18 16:14:32 pbs005 proxmox-backup-proxy[39143]: GET
>>  /api2/json/admin/datastore/XXXXXX/status: 400 Bad Request: [client
>>  [::ffff:]:45994] Unable to acquire lock
>>  "/etc/proxmox-backup/.datastore.lck" - Interrupted system call (os error
>>  4)
>>
>>  Which surprised me, since this is a ’status’ call, which should not need
>>  locking of the datastore-config.
>>
>>https://git.proxmox.com/?p=proxmox-backup.git;a=blob;f=src/api2/admin/datastore.rs;h=c611f593624977defc49d6e4de2ab8185cfe09e9;hb=HEAD#l687
>>  does not lock the config, but
>>
>>https://git.proxmox.com/?p=proxmox-backup.git;a=blob;f=pbs-datastore/src/datastore.rs;h=0801b4bf6b25eaa6f306c7b39ae2cfe81b4782e1;hb=HEAD#l204
>>  does.
>>
>>  So if I understand this correctly, every ’status’ call (30 per second in
>>  our case) locks the datastore-config exclusively. And also, every time
>>  ’status’ get called, the whole datastore-config gets loaded?
>
>probably, there are some comments about that there already, it might
>make sense to open a bugzilla issue to discuss this further [1].
>
>[1]: https://bugzilla.proxmox.com/
>
>>  Is that something that could use some performance tuning?
>>
>>  —
>>  Mark Schouten
>>  CTO, Tuxis B.V.
>>  +31 318 200208 / mark@tuxis.nl
>>
>>
>>  ------ Original Message ------
>>  From "Shannon Sterz" <s.sterz@proxmox.com>
>>  To "Mark Schouten" <mark@tuxis.nl>
>>  Cc "Proxmox Backup Server development discussion"
>>  <pbs-devel@lists.proxmox.com>
>>  Date 16/12/2024 12:51:47
>>  Subject Re: Re[2]: [pbs-devel] Authentication performance
>>
>>  >On Mon Dec 16, 2024 at 12:23 PM CET, Mark Schouten wrote:
>>  >>  Hi,
>>  >>
>>  >>  >
>>  >>  >would you mind sharing either `authkey.pub` or the output of the
>>  >>  >following commands:
>>  >>  >
>>  >>  >head --lines=1 /etc/proxmox-backup/authkey.key
>>  >>  >cat /etc/proxmox-backup/authkey.key | wc -l
>>  >>
>>  >>  -----BEGIN RSA PRIVATE KEY-----
>>  >>  51
>>  >>
>>  >>  So that is indeed the legacy method. We are going to upgrade our PBS’es
>>  >>  on wednesday.
>>  >>
>>  >>  >
>>  >>  >The first should give the PEM header of the authkey whereas the second
>>  >>  >provides the amount of lines that the key takes up in the file. Both
>>  >>  >give an indication whether you are using the legacy RSA keys or newer
>>  >>  >Ed25519 keys. The later should provide more performance, security should
>>  >>  >not be affected much by this change. If the output of the commands look
>>  >>  >like this:
>>  >>  >
>>  >>  >-----BEGIN PRIVATE KEY-----
>>  >>  >3
>>  >>  >
>>  >>  >Then you are using the newer keys. There currently isn't a recommended
>>  >>  >way to upgrade the keys. However, in theory you should be able to remove
>>  >>  >the old keys, re-start PBS and it should just generate keys in the new
>>  >>  >format. Note that this will logout anyone that is currently
>>  >>  >authenticated and they'll have to re-authenticate.
>>  >>
>>  >>    Seems like a good moment to update those keys as well.
>>  >
>>  >Sure, just be aware that you have to manually delete the key before
>>  >restarting the PBS. Upgrading alone won't affect the key. Ideally you'd
>>  >test this before rolling it out, if you can
>>  >
>>  >>  >In general, tokens should still be fater to authenticate so we'd
>>  >>  >recommend that you try to get your users to switch to token-based
>>  >>  >authentication where possible. Improving performance there is a bit
>>  >>  >trickier though, as it often comes with a security trade-off (in the
>>  >>  >background we use yescrypt fo the authentication there, that
>>  >>  >delibaretely adds a work factor). However, we may be able to improve
>>  >>  >performance a bit via caching methods or similar.
>>  >>
>>  >>  Yes, that might help. I’m also not sure if it actually is
>>  >>  authentication, or if it is the datastore-call that the PVE-environments
>>  >>  call. As you can see in your support issue 3153557, it looks like some
>>  >>  requests loop through all datastores, before responding with a limited
>>  >>  set of datastores.
>>  >
>>  >I looked at that ticket and yes, that is probably unrelated to
>>  >authentication.
>>  >
>>  >>  For instance (and I’m a complete noob wrt Rust) but if I understand
>>  >>https://git.proxmox.com/?p=proxmox-backup.git;a=blob;f=src/api2/admin/datastore.rs;h=11d2641b9ca2d2c92da1a85e4cb16d780368abd3;hb=HEAD#l1315
>>  >>  correcly, PBS loops through all the datastores, checks mount-status and
>>  >>  config, and only starts filtering at line 1347. If I understand that
>>  >>  correctly, in our case with over 1100 datastores, that might cause quite
>>  >>  some load?
>>  >
>>  >Possible, yes, that would depend on your configuration. Are all of these
>>  >datastores defined with a backing device? Because if not, than this
>>  >should be fairly fast (as in, this should not actually touch the disks).
>>  >If they are, then yes this could be slow as each store would trigger at
>>  >least 2 stat calls afaict.
>>  >
>>  >In any case, it should be fine to move the `mount_status` check after
>>  >the `if allowed || allow_id` check from what i can tell. Not sure why
>>  >we'd need to check the mount_status for a datastore we won't include in
>>  >the resulsts anyway. Same goes for parsing the store config imo. Send a
>>  >patch for that [1].
>>  >
>>  >[1]: https://lore.proxmox.com/pbs-devel/20241216115044.208595-1-s.sterz@proxmox.com/T/#u
>>  >
>>  >>
>>  >>
>>  >>  Thanks,
>>  >>
>>  >>  —
>>  >>    Mark Schouten
>>  >>  CTO, Tuxis B.V.
>>  >>  +31 318 200208 / mark@tuxis.nl
>>  >
>>  >
>
>

[-- Attachment #1.2: Type: text/html, Size: 15465 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

      reply	other threads:[~2025-01-06 19:08 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-13 16:21 Mark Schouten
2024-12-16  8:59 ` Shannon Sterz
2024-12-16 11:23   ` Mark Schouten
2024-12-16 11:51     ` Shannon Sterz
2024-12-16 13:01       ` Mark Schouten
2024-12-19  9:56       ` Mark Schouten
2024-12-20 13:22         ` Shannon Sterz
2025-01-06 19:07           ` Mark Schouten [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=em808af812-c25f-4569-8e1c-231663ec413f@d1b4cc0c.com \
    --to=mark@tuxis.nl \
    --cc=pbs-devel@lists.proxmox.com \
    --cc=s.sterz@proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal