In access log, some requests's duration is much longer than upstream_service_time

Most requests’s duration is nearly the same as upstream_service_time, with a very little difference.
But some requests’s duration is much longer than upstream_service_time, for example the upstream_service_time is 2ms, the duration could be 1200ms. The request’s status code is normal.
Don’t know how to debug such situation…
Here is a sample access log line:
{“downstream_remote_address”:“114.102.184.169:0”,“authority”:“prt-portal:8080”,“path”:"/article/list",“protocol”:“HTTP/1.1”,“duration”:“1092”,“upstream_service_time”:“1”,“upstream_local_address”:“127.0.0.1:47208”,“upstream_transport_failure_reason”:"-",“route_name”:“default”,“downstream_local_address”:“172.16.0.103:8080”,“user_agent”:“Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”,“response_code”:“200”,“response_flags”:"-",“start_time”:“2020-08-27T09:33:42.704Z”,“method”:“POST”,“request_id”:“7bb947aa-ffa4-9c95-a16d-6d2a9193fb20”,“upstream_host”:“127.0.0.1:8080”,“x_forwarded_for”:“114.102.184.169”,“requested_server_name”:“outbound_.8080_._.prt-portal.prod.svc.cluster.local”,“bytes_received”:“30”,“istio_policy_status”:"-",“bytes_sent”:“6197”,“upstream_cluster”:“inbound|8080|http-ms|prt-portal.prod.svc.cluster.local”}