Circuit breaking on failure not returning status as expected


#1

I am using istio-1.0.5 and installed it using istio-demo.yaml. I have applied below circuit braking config to product service in my mesh and used fortio service to tests the load. I see some requests getting failed after 5 parallel threads but my failed requests has reponse code as -1.
when I run “kubectl exec -it $FORTIO_POD -c istio-proxy – sh -c ‘curl localhost:15000/stats’ | grep product | grep pending” I am getting stats with all 0 values.

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: product
spec:
host: product
trafficPolicy:
connectionPool:
tcp:
maxConnections: 5
http:
http1MaxPendingRequests: 5
maxRequestsPerConnection: 5

Below is the Log after running more 6 parallel threads

08:59:29 E http_client.go:586> Read error &{{0xc420b08b00}} {10.27.253.19 6050 } 0 : EOF
08:59:29 E http_client.go:586> Read error &{{0xc420b08f00}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38448->10.27.253.19:6050: read: connection reset by peer
08:59:29 E http_client.go:586> Read error &{{0xc420b08e80}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38446->10.27.253.19:6050: read: connection reset by peer
08:59:29 E http_client.go:586> Read error &{{0xc420b08f80}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38450->10.27.253.19:6050: read: connection reset by peer
08:59:29 E http_client.go:586> Read error &{{0xc420b09100}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38456->10.27.253.19:6050: read: connection reset by peer
08:59:29 E http_client.go:586> Read error &{{0xc420b09080}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38454->10.27.253.19:6050: read: connection reset by peer
08:59:29 E http_client.go:586> Read error &{{0xc420b09000}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38452->10.27.253.19:6050: read: connection reset by peer
08:59:29 E http_client.go:586> Read error &{{0xc420aecd00}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38292->10.27.253.19:6050: read: connection reset by peer
08:59:29 E http_client.go:586> Read error &{{0xc420add600}} {10.27.253.19 6050 } 0 : read tcp 10.24.0.53:38458->10.27.253.19:6050: read: connection reset by peer
Ended after 553.62372ms : 400 calls. qps=722.51
Aggregated Function Time : count 400 avg 0.036229002 +/- 0.0381 min 0.000802915 max 0.174183201 sum 14.4916008

range, mid point, percentile, count

= 0.000802915 <= 0.001 , 0.000901457 , 0.25, 1
0.002 <= 0.003 , 0.0025 , 1.25, 4
0.003 <= 0.004 , 0.0035 , 5.00, 15
0.004 <= 0.005 , 0.0045 , 10.75, 23
0.005 <= 0.006 , 0.0055 , 14.75, 16
0.006 <= 0.007 , 0.0065 , 18.75, 16
0.007 <= 0.008 , 0.0075 , 22.25, 14
0.008 <= 0.009 , 0.0085 , 25.75, 14
0.009 <= 0.01 , 0.0095 , 30.00, 17
0.01 <= 0.011 , 0.0105 , 35.00, 20
0.011 <= 0.012 , 0.0115 , 40.75, 23
0.012 <= 0.014 , 0.013 , 50.00, 37
0.014 <= 0.016 , 0.015 , 57.50, 30
0.016 <= 0.018 , 0.017 , 62.00, 18
0.018 <= 0.02 , 0.019 , 63.50, 6
0.02 <= 0.025 , 0.0225 , 65.00, 6
0.03 <= 0.035 , 0.0325 , 66.25, 5
0.05 <= 0.06 , 0.055 , 66.50, 1
0.06 <= 0.07 , 0.065 , 69.00, 10
0.07 <= 0.08 , 0.075 , 81.75, 51
0.08 <= 0.09 , 0.085 , 92.75, 44
0.09 <= 0.1 , 0.095 , 94.25, 6
0.1 <= 0.12 , 0.11 , 98.25, 16
0.12 <= 0.14 , 0.13 , 98.50, 1
0.16 <= 0.174183 , 0.167092 , 100.00, 6

target 50% 0.014

target 75% 0.0747059

target 90% 0.0875

target 99% 0.164728

target 99.9% 0.173238

Sockets used: 335 (for perfect keepalive, would be 60)
Code -1 : 330 (82.5 %) /// bad response code.
Code 200 : 70 (17.5 %)


#2

this also happend because of port name in service configuration was tcp not http