mayankmurari commented on issue #2783:
URL: 
https://github.com/apache/apisix-ingress-controller/issues/2783#issuecomment-4669351942

   Hi @Baoyuantop  
   Thanks for looking into this.
   
   To provide additional context on our deployment and the conditions under 
which we are seeing the issue:
   
   **Current deployment model**
   
   * We create **one ****`ApisixRoute`**** per path**. Total count: **1400+ 
ApisixRoutes**.
   * We create **one ****`ApisixUpstream`**** per application**. Total count: 
**100+ ApisixUpstreams**.
   * We create **one ****`ApisixPluginConfig`**** per application**. Total 
count: **100+ ApisixPluginConfigs**.
   * Overall, we are managing **600+ APIs** containing **1400+ paths**.
   
   **Observed behavior**
   
   * When all resources are deployed together, synchronization fails with **ADC 
execution errors** and the corresponding `GatewayProxy` sync failure:
   
     * `ADC execution error ... Request failed with status code 500`
     * `failed to sync 1 configs: GatewayProxy/...`
   * If we split the deployment into **two batches**, both deployments complete 
successfully.
   * We captured the Admin API request size during a successful deployment of 
approximately **500 APIs**, and the generated configuration payload sent to 
APISIX was approximately **9.56 MB**.
   * We also attempted to increase **luaSharedDicts** beyond the default value 
as part of our investigation, but were not able to increase it in our 
deployment.
   
   Based on this behavior, we are trying to better understand the scalability 
characteristics and recommended deployment pattern for APISIX Ingress 
Controller at this scale.
   
   **Questions**
   
   1. Is there a documented or known **size/complexity limit** for a single 
`GatewayProxy` configuration or ADC config push?
   2. Are these failures typically driven by:
   
      * total number of APIs,
      * total number of routes/paths,
      * generated configuration size,
      * shared dictionary memory limits, or
      * some other scalability constraint?
   3. Does a configuration payload size of approximately **9.56 MB** for ~500 
APIs indicate that we may be approaching a known APISIX, ADC, or GatewayProxy 
limit? What is the config parameter to increase this size? We tried increaseing 
value for **luaSharedDicts** which was not accepted config.
   4. In our current model, we use **one ****`ApisixRoute`**** per path**. Is 
this the recommended pattern for large-scale deployments, or is there a better 
approach?
   5. Previously, we grouped multiple paths within a single `ApisixRoute`, but 
eventually encountered:
   
      * `status.conditions[0].message: Too long: may not be more than 32768 
bytes`
        To avoid that limit, we moved to one-route-per-path. Is this the 
recommended workaround, or is there a different scaling strategy that should be 
used?
   6. What is the recommended design pattern for managing **1000+ APIs / 10000+ 
paths** with APISIX Ingress Controller with **API Driven Standalone Mode** 
while avoiding both:
   
      * Kubernetes status size limitations,
      * ADC/GatewayProxy synchronization failures, and
      * potential memory/config-size bottlenecks?
   
   Any guidance on supported scale limits, recommended resource organization, 
memory tuning recommendations, or known best practices for deployments of this 
size would be greatly appreciated.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to