Hi we tried to replicate the behaviour using a load test in test environment. Following are the details of test:
Load: 300 TPS
Duration: 10 hours
VM: 4 Core 8 GB
From initiating the test TYK memory kept increasing ~5-6% per hour and in around 7 hrs it reached 65-66%
At this point we captured the heap data and shared the heap file with you in a one to one message.
Regarding Plugins, we are using grpc custom plugins written in GO mainly for rate limiting by client ip and some header logging stuff.
Following is our tyk.conf
{
"enable_http_profiler": true,
"log_level": "info",
"listen_port": 8081,
"node_secret": "*****",
"secret": "*****",
"template_path": "/opt/tyk-gateway/templates",
"tyk_js_path": "/opt/tyk-gateway/js/tyk.js",
"use_logstash": false,
"use_db_app_configs": false,
"db_app_conf_options": {
"connection_string": "",
"node_is_segmented": false,
"tags": []
},
"disable_dashboard_zeroconf": true,
"app_path": "/opt/tyk-gateway/apps",
"middleware_path": "/opt/tyk-gateway/middleware",
"storage": {
"type": "redis",
"enable_cluster": true,
"host" : "localhost",
"hosts": {"redis-member-1.int": "6379", "redis-member-2.int": "6379", "redis-member-3.int": "6379", "redis-member-4.int": "6379", "redis-member-5.int": "6379", "redis-member-6.int": "6379"},
"port": 6379,
"username": "",
"password": "",
"database": 0,
"optimisation_max_idle": 2000,
"optimisation_max_active": 4000,
"use_ssl": false,
"ssl_insecure_skip_verify": true
},
"enable_analytics": true,
"analytics_config": {
"type": "mongo",
"pool_size": 100,
"csv_dir": "/tmp",
"mongo_url": "",
"mongo_db_name": "",
"mongo_collection": "",
"purge_delay": 100,
"ignored_ips": [],
"enable_detailed_recording": false,
"enable_geo_ip": false,
"geo_ip_db_path": "",
"storage_expiration_time": 60,
"normalise_urls": {
"enabled": true,
"normalise_uuids": true,
"normalise_numbers": true,
"custom_patterns": []
}
},
"health_check": {
"enable_health_checks": false,
"health_check_value_timeouts": 60
},
"allow_master_keys": true,
"policies": {
"policy_source": "file",
"policy_connection_string": "",
"policy_record_name": "tyk_policies",
"allow_explicit_policy_id": true,
"policy_path": "/opt/tyk-gateway/policies"
},
"hash_keys": true,
"suppress_redis_signal_reload": false,
"enable_redis_rolling_limiter": false,
"use_redis_log": false,
"close_connections": true,
"enable_non_transactional_rate_limiter": true,
"enable_sentinel_rate_limiter": false,
"experimental_process_org_off_thread": false,
"enforce_org_quotas": false,
"enforce_org_data_detail_logging": false,
"local_session_cache": {
"disable_cached_session_state": false
},
"http_server_options": {
"use_ssl": true,
"enable_strict_routes": false,
"min_version": 771,
"max_version": 772,
"enable_websockets": true,
"flush_interval": 1,
"read_timeout": 2000,
"write_timeout": 2000,
"enable_path_suffix_matching": false,
"enable_path_prefix_matching": false,
"certificates": [
{
"domain_name": "*.int",
"cert_file": "/tyk-ssl/int.crt",
"key_file": "/tyk-ssl/int.pem"
}
],
"ssl_insecure_skip_verify": true
},
"streaming": {
"enabled": true,
"allow_unsafe": []
},
"uptime_tests": {
"disable": true,
"config": {
"enable_uptime_analytics": false,
"failure_trigger_sample_size": 3,
"time_wait": 1,
"checker_pool_size": 50
}
},
"hostname": "",
"enable_custom_domains": true,
"enable_jsvm": false,
"oauth_redirect_uri_separator": ";",
"coprocess_options": {
"enable_coprocess": true,
"coprocess_grpc_server": "unix:///tmp/grpc-go.sock",
"grpc_recv_max_size": 1073741824,
"grpc_send_max_size": 1073741824
},
"enable_bundle_downloader": false,
"bundle_base_url": "",
"pid_file_location": "./tyk-gateway.pid",
"allow_insecure_configs": true,
"public_key_path": "",
"close_idle_connections": false,
"allow_remote_config": false,
"global_session_lifetime": 100,
"force_global_session_lifetime": false,
"max_idle_connections_per_host": 100,
"proxy_default_timeout": 1200,
"health_check_endpoint_name": "health",
"oas_config": {
"validate_examples": false,
"validate_schema_defaults": false
},
"proxy_ssl_insecure_skip_verify": true
}