Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set replication_factor 1 to 2, rps is down 50% #4392

Open
kawhi-xl opened this issue Jun 4, 2024 · 8 comments
Open

Set replication_factor 1 to 2, rps is down 50% #4392

kawhi-xl opened this issue Jun 4, 2024 · 8 comments
Labels
bug Something isn't working can't reproduce That is unclear how to reproduce the issue

Comments

@kawhi-xl
Copy link

kawhi-xl commented Jun 4, 2024

Current Behavior

I set the collection replication_factor 1 to 2, rps is down 50%

Steps to Reproduce

  1. create a collection, insert some points.
  2. make some request to search, rps may be 100.
  3. create a new collection with 2 replication_factor, make some request to search, rps is only 50, down 50%!

Expected Behavior

rps should not down, rps should be 100 same to the first collection.

Possible Solution

I set the collections replication_factor with 2. I want the rps same with 1 replication_factor, which means my computing costs double!

Context (Environment)

Detailed Description

Possible Implementation

I read the source code, found the read_fan_out_factor parameter. I want every request only by one replicaset calculated. what should I do?

@kawhi-xl kawhi-xl added the bug Something isn't working label Jun 4, 2024
@kawhi-xl
Copy link
Author

kawhi-xl commented Jun 4, 2024

May it is not a bug, I want to know why read_fan_out_factor can't set to be requests calculated by only one replica.

@generall
Copy link
Member

generall commented Jun 4, 2024

hey @kawhi-xl, how do you serve distributed deployment? It is multiple machines? How if there a load balancer?
read_fan_out_factor is only used in exceptional situations like ongoing updates, so it your case each request should land into one replica only

@kawhi-xl
Copy link
Author

kawhi-xl commented Jun 5, 2024

@generall yes, deployment with distributed, the cluster have 2 machines. read requests by grpc with slb, no write during read. What are the possible reasons? what shoud I do?
qdrant version is v1.9.4

@kawhi-xl
Copy link
Author

kawhi-xl commented Jun 5, 2024

Also my search requests with no read_consistency. read_consistency default value is factor(1), should land into one replica only.

@tellet-q
Copy link
Contributor

tellet-q commented Jun 6, 2024

@kawhi-xl could you please show how you calculate the rps?

@generall generall added the can't reproduce That is unclear how to reproduce the issue label Jun 8, 2024
@kawhi-xl
Copy link
Author

kawhi-xl commented Jun 9, 2024

@tellet-q request with concurrency by client, rps = rquests_total_costs / requests_num. the colletion default_segment_number is 2, because my business requires high throughput.

@timvisee
Copy link
Member

Could it be that your machines are very limited in terms of resources? What does your resource usage look like?

Also, how many points are we talking about? Are you sure they are properly indexed before running the test?

@kawhi-xl
Copy link
Author

the cpu usage is 100%. about 4k+ points. the parm of indexing_threshold is 20000. Also test with 1 shared 6 replicas(6 node, 8C 16G of per node), the rps is similar with 1 shared 1 replica. the rps about 163.
img_v3_02bh_3f2f99ac-51dc-4033-97c8-f6d2caeadffg
rps

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working can't reproduce That is unclear how to reproduce the issue
Projects
None yet
Development

No branches or pull requests

4 participants