Shichao An created CASSANDRA-14678:
--------------------------------------

             Summary: Propose reducing the default value for 
PasswordAuthenticator number of hashing rounds
                 Key: CASSANDRA-14678
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14678
             Project: Cassandra
          Issue Type: Wish
          Components: Auth
            Reporter: Shichao An


We saw performance degradation in some of our Cassandra clusters using 
PasswordAuthenticator. When the clients start connecting to the Cassandra 
nodes, the CPU load increases, and there is a high chance that the host will be 
unable to recover from high CPU usage if the clients retry indefinitely at 
relatively high frequency. In each reconnection, the clients try to initiate 
auth handshakes, but may fail due to timeouts from the overloaded host, whereas 
the sporadic auth handshakes will put more load to the host, so on so forth. In 
our case, the load average can be 1000~3000 on a 32-core host. The host is 
basically unable to serve any traffic.

We found it is caused by the slow `BCrypt.checkpw` operation, where the 
generated salted hash round is 10 because `GENSALT_LOG2_ROUNDS_PROPERTY` 
defaults 10, which makes it 2^10 rounds of hashing iterations. I changed the 
hashing rounds to 4 by overriding `auth_bcrypt_gensalt_log2_rounds` system 
property and it can effectively solve above-mentioned the CPU issue.

It took us some time to nail down the cause of this problem. Shall we reduce 
the default value of `GENSALT_LOG2_ROUNDS_PROPERTY` to a smaller value than 10? 
Any suggestions on the tradeoff between performance and cryptographic impact?

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to