Microservices is an architectural style of development consisting of a collection of small independent and loosely coupled components. Microservices-based applications are deployed in form of many containers deployed in a pool of virtual machines (VMs). When there is a rise on the workload, microservice resources are overloaded and then it should have additional resources. One of the most important issues in cloud environment is to minimize computing resources so as to reduce the deployment cost of the application. We can resolve this issue and optimize computing resources using autoscaling techniques. An autoscaler automatically provisions essential resources at real time. Existing autoscalers have many issues which reduce their efficiency. The first issue is that existing autoscalers suppose that threshold exceeding is always caused by the rise of the workload. However, exceeding thresholds may not be caused by the increase in the workload, but may be caused by other problems such as specific requests, VM or container issues. The second issue is that in resource provisioning, many autoscalers do not select the appropriate microservices for scaling resources. The third issue is that existing autoscalers do not calculate needed resources to be allocated for each microservice