Introduction

Given the staggeringly fast growth of internet technology, the main concern revolves around the reliability of web applications. The critical issue in providing reliability involves the performance and availability of web applications/servers. A definition to software aging can be “a growing weakening of the internal state of software”. When software applications run persistently for long periods of time, the corresponding software processes give rise to aging. The processing aging can be associated with shortage of memory and non-release file locks, data corruption in the operating environment, and the like. Aging will undermine the performance of a device and eventually cause the application to fail. As a dynamic fault tolerance technique, software rejuvenation is adopted to solve the software aging problem.

Nonetheless, software rejuvenation barely solves the root cause of software aging. Therefore, software rejuvenation will run cyclically in a predetermined or scheduled time to preserve the firmness of the software system.

The two primary approaches to determining the timing for software rejuvenation are time-based and inspection-based. Time-based approaches specify the optimal rejuvenation time through analyzing the relationship between the software system state and the presumed distribution of system fault. The inspection-based policy is normally pursued through continuous monitoring at runtime and fault behavior using statistical data analysis in an attempt to estimate the intervals of software rejuvenation. Nevertheless, the fairly intricate computing process generally results in greater resource fatigue in the software system. Therefore, frequent inspections at runtime in a software system may lead to certain levels of fault and cost overheads. This should be accounted for along with the fault and cost of failure in an effort to achieve maximum efficiency [1].

As fundamental software artifacts, web services intend to build service-oriented applications [2]. The web service architecture standard, as displayed in Fig. 1, is composed up of three parts, namely Web Service Providers, Web Services Brokers, and Web Service Requester. According to the standard web service architecture, the web service provider is meant to host web services and applications. The web service broker normally renders the web service publicly available, while the web service requester contributes by linking the web service operation with the application environment under this architecture [3, 4].

Fig. 1
figure 1

Web service architecture [4]

Given the fact that software rejuvenation relies on a wide variety of criteria that are often qualitative and vary under different circumstances, we decided to employ the fuzzy method in this paper. Fuzzy logic-based solutions are cost-effective for a wide range of applications when compared to the traditional methods [5]. The fuzzy logic is used, because the impact level of such criteria need to be determined by several stages of training. Additionally, the system idle time during the rejuvenation routine was minimized by two or more versions instead of one version per service. However, this was achieved by specifying the number of optimal versions per service in a way that (1) the overhead of using multiple versions is minimized; and (2) the system idle time is minimized for each service.

The rest of this paper is organized as follows. “Literature review” describes previous relevant studies on rejuvenation. Then, our newly proposed method is explored in “Proposed method”. “Simulation” describes the experiments and tests. And finally, “Conclusions” outlines the results.

The main contributions of this study are summarized as follows: (1) To reduce the failed requested web services, in this study, we use fuzzy allocation that facilitates flexible implementation between the requested and allocated web services in allocation and rejuvenation processes. (2) In our proposed method, services not allocable upon user requests due to low reliability are included in the rejuvenation process while allocating other appropriate services. (3) The suggested method has dynamic management which depends on availability of the whole system. (4) Ignoring any predetermined rejuvenation time in the proposed method can increase the performance of the systems by reducing downtime.

Literature review

One definition to software aging can be “a growing weakening of the internal state of software”. Software rejuvenation is a recent, dynamic technique of fault tolerance adopted to tackle the software aging problem. Older techniques of software fault tolerance tend to be reactive, i.e., they engage in repairing a fault event after its occurrence, which in turn causes a great deal of repair overhead. While software rejuvenation is known as an active technique preventing fault prior to its occurrence or slowing down its occurrence, the cost of such overhead is far lower than that of fault repairing. This technique has been proposed to dealing with the aging process. Vaidyanathan et al. [1] investigated an inspection-based method for preventive maintenance in a software operating system, which was inspected periodically at specific intervals based on the Markov's model. The optimum inspection interval has been obtained to minimize faults and costs. The performance of this method is justifiable in simple software; however, it requires improvement in more complex software. Ning et al. [6] studied a multi-granularity software rejuvenation policy, assuming that inspection intervals follow an exponential distribution. These studies were limited because of considering constant time and distribution that degrades the system’s performance.

As an essential requirement for web service-based systems, reliability is expected to provide services with high availability, high fault-tolerance, and dynamic deployment capabilities [7, 8]. In this regard, Dantas et al. [9] presented several availability models for private cloud architectures based on Eucalyptus platform. Cloud computing systems basically provide access to large datasets and computing resources. One of the major reasons behind the sluggish growth of cloud computing, however, is security [10,11,12]. Araujo et al. [13] proposed a software framework mainly used as a service for private cloud computing. This research concentrated on the software effectiveness within the framework of Eucalyptus in terms of system workloads and high demands for remote storage and virtual models. Moreover, they set forth an approach that offers a time-series analysis for rejuvenation scheduling in an attempt to mitigate the fault time by predicting the appropriate time for rejuvenation. Meenakshi et al. [14] suggested another approach that allocated resources with minimal waste in cloud computing by sending requests to the request tuner.

With the emergence of peer-to-peer systems, there has been greater emphasis on the need to identify and utilize diverse groups, multiple features, and distributed and dynamic resources. Bandara and Jayasamana [15] investigated a number of problems concerning peer-to-peer systems. Solutions were investigated in these systems for collecting and discovering new resources with regard to their architecture, search overheads, and load balancing. They additionally offered software rejuvenation in peer-to-peer systems as an ideal solution to improvement of such features. Guo et al. [16] adopted discrete web services in an effort to measure software aging failures and software rejuvenation strategies based on the assumption that discrete web services provide a loose connection feature to the server. The method in their research used several linear regression methods to calculate the aging of individual web services. Almutawakel et al. [17] presented a new fuzzy technique based on CSP exclusively for cloud resource allocation. This method set forth a new hybrid resource allocation approach based on multi-agent system (MAS), distributed constraints satisfaction problems (DCSP), and the fuzzy logic (FL) model. In [18], the extension of the Fuzzy Possibilistic Clustering Algorithm (FPCM) adopted Type-2 Fuzzy Logic Techniques to enable this method to handle a higher degree of uncertainty in a dataset and eventually solve real-world problems where data clustering is involved.

Mooij et al. [19] demonstrated that semi-automatic software rejuvenation in industrial operations is feasible and cost-effective. They employed specific domain models involving abstract implementation details while applying a practical combination of manual and automated techniques. In [8], software rejuvenation coupled with check-pointing occasionally saved the system state on a reliable storage in a way that the mission task could be resumed from the last-save checkpoint. This work was limited due to the assumption of full-state independent rejuvenation that leads to system degradation. In [20], the optimal service selection was intensely complicated, posing a serious challenge to Smart Cloud Storage management. Fuzzy logic can facilitate the selection of the perfect response to customer requirements in terms of QoS service quality and costs. In addition, it will help to predict the number of software faults over the course of development. In [21], researchers presented a new hybrid aging prediction model, which ideally incorporates the Autoregressive Integrated Moving Average (ARIMA) and Long–Short-Term Memory (LSTM) models to achieve more appropriate fitting of the linear pattern as well as mining the non-linear relationship in the time-series of computing resource usage data for cloud services. Their model came with certain shortages, since it assumed that the linear and non-linear components of the sequence are simply additive. Santoshs et al. [22] proposed a new technique to compare the capabilities of six fault prediction methods for the potential number of faults.

Generally speaking, the majority of previous methods proposing to optimize software rejuvenation in various software systems have disadvantages. In this study, we attempted to cover most of such disadvantages, a few of which have been summarized below:

  1. 1.

    The methods proposed for optimization of software rejuvenation in software systems are mostly one-dimensional. In fact, only one aspect of software rejuvenation has been considered. For instance, Meng et al. [23] considered their non-sequential inspection intervals to optimize software rejuvenation. They did not, however, take into account other dimensions effective in software rejuvenation. In that study, Machida and Miyoshi [24] considered an optimal stopping problem for software rejuvenation. However, they did not explore sequences at different time intervals.

  2. 2.

    The methods proposed for software rejuvenation mostly involve static management in software systems. In fact, they consider a static structure for software rejuvenation. However, they do not adopt different methods for software rejuvenation at the time of running the software under different circumstances [25,26,27,28,29].

  3. 3.

    There are numerous software rejuvenation methods stopping the software system during software rejuvenation. In fact, user requests are left unanswered at the time of rejuvenation. This policy of implementation mechanism simplifies the procedure, but decreases the system’s level of availability [30, 31].

  4. 4.

    There are certain software rejuvenation methods including the software version. In addition, the fault tolerance is low in the systems. When an error occurs at the time of rejuvenation of this single version of the software, the system availability is lowered [16, 32].

The fault tolerance for web services is regarded as a critical research topic in selection of a web service. The conventional fault tolerance web service models pose certain limitations [33, 34]. For example, there are essential sources of fault tolerance not integrating, or not focusing on various attributes of service quality such as performance and accessibility so as to satisfy user requirements.

In their endeavor to resolve these constraints, Nguyen et al. [35] proposed a Bayesian fault tolerance model for web services. It includes several criteria such as reliability, availability, and safety during the evaluation of fault tolerance of web services. Furthermore, their method has substantially eliminated the problems of user preferences and fault tolerance through several service quality parameters. Yahyaoui [36] proposed a game theory model based on fault tolerance, collaborating with web services. In this research, each partner was modeled as a game, where a web service provider in each round bids for collaborating in achieving a specific task. A web service is the winner of the game when it achieves minimum cost based on fault tolerance.

Liu et al. [3] introduced a fault tolerance evaluation model with reasonable correction logic. This method made improvements in the SOA framework by incorporating a trust management module. At the next stage, the trust evaluation model was proposed based on an amendatory subjective logic by viewing trust relationships of service entities in web service networks as a micro-scale network. To conduct internal software rejuvenation, Torquato et al. [37] presented a number of availability models based on Stochastic Petri Nets to evaluate two VM live migration approaches. The method hinged on the redundancy schemes known as Warm-Standby and Cold-Standby. In their review article, Wahab et al. [38] explored the categorization of different types of web services including single, mixed, and associative web services. They further clarified the effective criteria for evaluation of fault tolerance in each web service mentioned earlier. In [39, 40], fault-tolerance techniques were proposed based on meta-heuristics in an effort to fight software aging in continuously running applications such as web service-based systems. However, the methods are limited due to impossible application in systems requiring short response times.

Proposed method

This section presents a new method for solving the shortcomings of previous works mentioned in the last sections.

In web service-based applications, evaluation of Quality of Service values is an important issue and also difficult to calculate due to uncertain, poorly available information about quality parameters of web services, as well as their non-linear relations [41]. In the proposed method, the servers provide web services based on receiver requests under two scenarios. First, they are expected to have minimal reliability requirements for those services. Second, there should be maximum matching between the requested web service and the allocated web service as far as possible. If allocation takes place exactly based on the request in web services (as in previous rejuvenation methods), a major problem in fault-tolerance systems is the curtailed availability for specific infeasible requested services.

In an effort to tackle this deficiency, the new method employed a type of fuzzy allocation that facilitates flexible implementation between the requested and allocated web services. The new application of fuzzy dubbed Fuzzy Dynamic Web Service Rejuvenation (FDWSR) can adjust the membership functions initially defined by experts.

In addition, the fuzzy logic applied in this problem not only enhances the fault tolerance, but also renders the newly proposed method so unique.

Although considering fuzzy logic can improve fault tolerance in these systems, a few other properties made the method unique. For example, most of the previous rejuvenation methods stop the system at the time of rejuvenation; that is, user requests could not be answered at the time of rejuvenation. This policy of the implementation mechanism simplifies the procedure, but reduces the system’s availability. In the proposed method, the web services cannot be allocated to users' requests because of their unsuitable availability.

In our method, services not allocable upon user requests due to low reliability are included in the rejuvenation process while allocating other appropriate services.

On the other hand, foregoing methods have static management; that is, they consider a static structure for software rejuvenation at specific times. The suggested method has dynamic management which depends on availability of the whole system.

Ignoring any predetermined rejuvenation time in the proposed method can increase the performance of the systems by reducing downtime.

In the proposed method, the systems requiring rejuvenation do not receive any request from users, but there are certain alternative systems available to respond to user's request. This, in turn, prevents the system from stopping. In the suggested method for the last shortcoming in previous related works, several web service providers were considered for responding to receivers. In this case, when one server stops, the whole system does not afford halt, thus increasing accessibility at rejuvenation time. In this study, we adopted single web services, for which we set criteria such as run time, threshold of reliability, and maximum deadline on the receiver side which requests the web service. On the server side, we considered criteria such as reliability, failure rate, and rejuvenation rate. In this study, we calculated the mean time to failure (MTTF) for all web services to calculate the inspection periods for rejuvenation. We also set the inspection period to be the lowest MTTF for all web services.

In this research, the servers provide web services based on receivers’ request for web services under two conditions. First, they need to have minimal reliability requirements for those services. Second, there should as far as possible be maximum matching between the web service requested and the web service allocated. The reliability of web services in this research was considered exponentially according to Eq. (1), where λ is the rate of failure:

$$ R\left( t \right) = e^{ - \lambda t} . $$
(1)

It is probably the most important distribution in reliability work and is used almost exclusively for reliability prediction. This distribution has the advantage of easily estimated parameter (λ).

Fuzzy system structures are adopted to identify a suitable web service for allocating. At the same time, they are suitable web services for rejuvenating, because they consider (1) 100% of the adoption of web service based on receivers’ request that might give rise to substantial restriction and fail many requests; (2) the great response of fuzzy logic to uncertainly and its logical reasoning to uncertain problems like software aging.

Fuzzy logic was originally introduced by Zadeh [42] as a mathematical strategy to represent vagueness in everyday life. In all sorts of intelligent algorithms, such as computational intelligence, artificial intelligence, machine learning, and so forth, one way to compute systems with uncertainty is to use Type-1 or Type-2 Fuzzy Logic Systems [43,44,45,46].

The general structure of the proposed algorithm is displayed in Table 1. In this structure, the first line defines the number of stages in a scenario that includes a set of requested web services. At each stage of the run, the appropriate server must be found for each of the requested web services. In the second line, RWS-Num denotes the total number of web services requested. For each web service requested at any stage, if the web service fails or expires, it will no longer need to be reviewed (lines 3–5). In line 6, we find the appropriate server for the current web service using a fuzzy system with a structure described later.

Table 1 General structure of the proposed software rejuvenation algorithm

If a suitable server is not found for the current web service, the necessary changes should be made to the current web service. In fact, one should be subtracted from the time period, and providing that it does not have any time left, it should fail. If the suitable servers were found in the subsequent levels and the allocation happened, the slight service could not run in the acceptable time (lines 8 and 9). Upon finding the appropriate servers, to run the current web service, this service will be run with the most appropriate server. In addition, changes will be made on the features of the current web service (lines 10 and 11).

At each stage, after making decisions for all web services, changes should be made to the receivers for the next stages (lines 14–22). If the current condition is the server rejuvenation, the rejuvenation procedure should continue for it. Upon completion of the rejuvenation process, it should be switched to the ready mode (lines 15–17). The threshold value depends on the structure of the web service provider and is based on the value of the server's reliability that provides the desired level of service in this scenario. The threshold in cloud computing for data centers is usually defined by the manufacturers. Different thresholds were considered in the suggested method based on the server’s structures. If the reliability of a server is lower than the threshold, the rejuvenation procedure should be performed on it for the next stages. As a result, its mode should be changed to rejuvenation (lines 18–20). At the end of each stage, the last changes should be applied to each service for later stages (line 21).

In the structure of the newly proposed algorithm in Table 1, the most important step is choosing the appropriate servers. In this article, the fuzzy system was used since considering 100% web service compliance with the receivers’ request may bring about numerous limitations and may result in many failures in addressing the requests.

In the newly proposed fuzzy system, the reliability of the match rate of user’s requested web service and the reliability of web service providers are calculated. In fact, it intends to perform the system conformity to determine whether a service provider can execute a service in a suitable extent. Because the input/output parameters are relative in this system, the proposed method used the Mamdani fuzzy system to find the appropriate web service provider. Based on the proposed fuzzy system, there are supposedly two inputs and one output. The first input of fuzzifier identifies the reliability of the requested web service and consists of three membership functions with labels of “low”, “medium”, and “high”. The thresholds are defined based on the distribution of the parameters in dataset. The second input of fuzzifier identifies the reliability of the web service provider, i.e., the membership functions and numerical intervals are exactly the same as one to truly check the accordance of two input parameters. The output fuzzy variable shows the similarity rate in the fuzzy system. If the value of similarity rate between the web service requester and the web service provider surpasses 70%, service provider could, according to the fuzzy rules, be considered a candidate for allocation. If this value becomes less than 30%, allocation will be impossible. Between these two values, allocation could be done with a numerical ratio. Fuzzy rules were then defined to specify the appropriate logic mapping. We considered five fuzzy rules that determined all possible allocations of the web services and were considered via service provider. For example, the third rule expresses the fact that if the value of the requested web service reliability is medium and the value of web service provider reliability in not low, the allocation output fuzzy variable will be in the nearly certain acceptance status (i.e., allocation will be done).

According to the rules extracted, in case the reliability of the requested web service is greater than the current web service, then allocation will not take place and the less reliable web service will be included in the rejuvenation process.

To obtain the best fuzzy system, several systems were considered with different membership functions and defuzzification methods (according to Table 4). Meanwhile, the best fuzzy system with minimum number of failure and runtime was selected in progress of the work.

Fuzzy rules were then defined to specify the appropriate logic mapping in Table 2. We considered five fuzzy rules that determined all possible allocations of the web services and were considered via service provider. For example, the third rule expresses the fact that if the value of the requested web service reliability is medium and the value of web service provider reliability is not low, the allocation output fuzzy variable will be in the nearly certain acceptance status (i.e., allocation will be done).

Table 2 Fuzzy rules applied to find the appropriate server

Simulation

In this article, we conducted simulations on Windows 7 and a Core i5 system. Meanwhile, we simulated fault tolerance features for web service providers using the MATLAB programming language. In this simulation, we then made evaluation possible based on scenarios of web service requests that allow the scenarios to be created randomly as well as implementing the scenarios that exist in the previous dataset.

Since one of the most important issues of software rejuvenation is ever-increasing accessibility in web service providers and the reduction of failed web service request numbers, this objective can be attained. Several methods were adopted in this research based on scenarios given in Table 3 and according to the number of failed web services.

Table 3 Specifications of different scenarios to run in simulation

In this simulation, the request scenarios of the receivers were tested based on suitable web services selection with/without a fuzzy system. We can see a few of the simulations scenarios in Table 3.

In this simulation, to find the appropriate fuzzy system, 48 fuzzy systems were considered based on different fuzzy membership functions, inferences, and defuzzification according to Table 4.

Table 4 Different considered fuzzy systems in the proposed method

In the new method, the fuzzy system has seven attributes. The first attribute shows the kind of fuzzy system that considers Mamdani for all systems. As can be seen in the following, several fuzzy systems with different membership functions and defuzzification method were considered so as to obtain the best fuzzy system:

$$ Trapmf\left( {x,a,b,c,d} \right) = \left\{ {\begin{array}{*{20}c} {0 x \le a} \\ {\frac{x - a}{{b - a}} a \le x \le b } \\ {1 b \le x \le c } \\ {\frac{d - x}{{d - c}} c \le x \le d} \\ {0 d \le x} \\ \end{array} } \right.. $$
(2)
$$ smf\left( {x,a,b} \right) = \left\{ {\begin{array}{*{20}l} 0 \hfill & {x \le a} \hfill \\ {2\left( {\frac{{x - a}}{{b - a}}} \right)^{2} ~} \hfill & {a \le x \le \frac{{a + b}}{2}} \hfill \\ {1 - 2\left( {\frac{{x - a}}{{b - a}}} \right)^{2} ~} \hfill & {\frac{{a + b}}{2} \le x \le b} \hfill \\ 1 \hfill & {~x > b} \hfill \\ \end{array} } \right.$$
(3)
$$ pimf\left( {x,a,b,c,d} \right) = \left\{ {\begin{array}{*{20}l} 0 \hfill & {x \le a} \hfill \\ {1 - 2\left( {\frac{{x - a}}{{b - a}}} \right)^{2} } \hfill & {\frac{{a + b}}{2} \le x \le b} \hfill \\ 1 \hfill & {b \le x \le c} \hfill \\ {1 - 2\left( {\frac{{x - c}}{{d - c}}} \right)^{2} } \hfill & {c \le x \le \frac{{c + d}}{2}} \hfill \\ \begin{gathered} 2\left( {\frac{{x - c}}{{d - c}}} \right)^{2} \hfill \\ 0 \hfill \\ \end{gathered} \hfill & \begin{gathered} \frac{{c + d}}{2} \le x \le d \hfill \\ x > d \hfill \\ \end{gathered} \hfill \\ \end{array} } \right.$$
(4)
$$ zmf\left( {x,a,b} \right) = {\text{ }}\left\{ {\begin{array}{*{20}l} 1 \hfill & {x \le a} \hfill \\ {1 - 2\left( {\frac{{x - a}}{{b - a}}} \right)^{2} } \hfill & {a \le x \le \frac{{a + b}}{2}} \hfill \\ {2\left( {\frac{{x - a}}{{b - a}}} \right)^{2} } \hfill & {\frac{{a + b}}{2} \le x \le b} \hfill \\ 0 \hfill & {x > b} \hfill \\ \end{array} } \right.$$
(5)
$$ gaussmf\left( {x,\sigma ,c} \right) = e^{{\frac{{ - \left( {x - c_{i} } \right)^{2} }}{{2\sigma_{i}^{2} }}}} $$
(6)
$$ min\left( {a,b} \right) = \left\{ {\begin{array}{*{20}c} {b, b < a} \\ {a, b \ge a} \\ \end{array} } \right. $$
(7)
$$ max\left( {a,b} \right) = \left\{ {\begin{array}{*{20}c} {a, b < a} \\ {b, b \ge a} \\ \end{array} } \right. $$
(8)
$$ {\text{prod}}\left( {a,b} \right) = a \times b $$
(9)
$$ {\text{probor}}\left( {a,b} \right) = a + b - \left( {a \times b} \right) $$
(10)
$$ x_{{{\text{centiroid}}}} = \frac{{\int {x\mu_{i} (x)\,dx} }}{{\int {\mu_{i} (x)\,dx} }} $$
(11)
$$ \int_{\alpha }^{{x_{bisector} }} {\mu_{i} (x)\,dx} = \int_{{x_{bisector} }}^{\beta } {\mu_{i} (x)\,dx} $$
(12)
$$ hgt(Z_{k} ) = \mu_{{B^{k} }} (z),\,\,\,\,z \in Z $$
(13)
$$ z^{*} = \mathop {Sup}\limits_{z \in Z} \left\{ {z \in Z\left| {\mu_{{B^{k} }} (z) = hgt(Z_{k} )} \right.} \right\} $$
(14)
$$ MOM\left[ {C\left( z \right)} \right] = \frac{{\mathop \smallint \nolimits_{a}^{b} zdz}}{{\mathop \smallint \nolimits_{a}^{b} dz}} = \frac{1}{2}(a + b). $$
(15)

In the next stage, to obtain the best fuzzy system, several systems with different membership functions and defuzzification methods (according to Eqs. 215) were considered. Meanwhile, the best fuzzy system with minimum number of failures and runtimes was selected in progress of the work. For a given domain x and a, b, c, d parameters, Eq. (2) returns the corresponding y values for the trapezoidal membership function.

The argument x represented a real number of web service reliability and parameters a, b, c, and d were set by expert depending on system condition and must satisfy the inequalities: a < b ≤ c < d. The minimum and maximum values of the trapezoid are assumed to be 0 and 1. The parameters [a b c d] correspond to the x values of the trapezoid corners.

Three polynomial-based curve membership functions, given in Eqs. (35), are the Z, S, and \({P}_{i}\) curves, which are all named because of their shape as zmf, smf, and pimf. The function zmf is the asymmetrical polynomial curve open to the left, smf is the mirror-image function that opens to the right, and printf is zero on both extremes with rise in the middle. Another fuzzy membership function often used to represent vague, linguistic terms is the Gaussian, which is given by Eq. (6), where \({c}_{i}\) and \({\sigma }_{i}\) are the center and width of the ith fuzzy set \({A}^{i}\).

In fuzzy logical operations, any number of well-defined methods can fill in for the AND operation or the OR operation. In the Fuzzy Logic Toolbox, two built-in AND methods (min (minimum) and prod (product)) and two built-in OR methods (max (maximum) and the probabilistic OR method (probor)) are supported. All of these fuzzy inferences are shown in Eq. (710). In Eq. (11), \({x}^{\mathrm{*}}\) is the x-coordinate of center of gravity and \({\int }_{i=1}^{n}{\mu }_{i}\)(x) dx denotes the area of the region bounded by the curve \({\mu }_{i}\). In this equation, \({x}_{i}\) is a sample element and n represents the number of elements in the sample. In the bisector defuzzification method, \(\alpha \) represents \(\mathrm{min}\left\{x\right|x\in X\}\) and \(\beta \) shows \(\mathrm{m}\mathit{ax}\left\{x\right|x\in X\}\).

Equation (13) shows the maximum defuzzifier that chooses the point in Z corresponding to the height of \({\mu }_{{B}^{k }}(z)\). hgt(\({Z}_{k}\)) can be a set of points with max membership function. One of the "smallest/largest/mean" of maximum defuzzifier can be used in maximum defuzzifier as the largest of maximum values, as shown in Eq. (14). In mean of maximum method (Eq. 15), the defuzzified value is taken as the element with the highest membership values.

Since the fuzzy systems considered in this study are dedicated to dynamic rejuvenation of web services, we named them FDWSR. In the tests conducted for evaluation, we first considered different fuzzy systems in the proposed method, and then simulated this method for a non-fuzzy system. We also compared our method with the rejuvenation of web services based on multiple linear regression approach which was proposed in [47], combination of Ant Colony Optimization and Gravitational Emulation Local Search based approach in [40], and the two-granularity inspection-based software rejuvenation policy based on the Markov regenerative process in [6]. In all the methods, the comparison criteria were runtime and the number of failed web services.

Table 5 provides the number of failed web services, for the mentioned scenarios (in Table 3) using different fuzzy methods. As can be seen, the fuzzy systems 2, 4–8, 13–16, 22, 24, and 43–44 have lower failed web services.

Table 5 Failed web services using different fuzzy system

The runtimes of scenarios using different fuzzy methods are presented in Table 6. As can be seen, the fuzzy system 13 has the shorter runtime in comparison to the other fuzzy systems with the same number of failures (on average 5.38 s).

Table 6 Runtime of scenarios with different fuzzy methods

According to the obtained results in Tables 5 and 6, the fuzzy system 13 is the most appropriate fuzzy system owing to its minimum number of failures and runtimes. Now, we compare the results of the proposed method based on FDWSR13 against other methods. In Fig. 2, the performance of the proposed method has been illustrated. As Fig. 2 displays, the suggested method has the most flexibility and the least failed web service numbers in different scenarios. For instance, in dataset 8, the fuzzy-based method has ten failed web services, i.e., three, five, five, and two numbers approximately less than non-fuzzy, multiple linear regression approach, inspection-based policy based on the Markov regenerative method and ACOGELS approach, respectively. As Fig. 2 demonstrates, the fuzzy method, in comparison with non-fuzzy, regression-based, inspection-based methods, and ACOGELS approach, has on average less than 45%, 40%, 23%, and 12% failed web service, respectively. As results demonstrate, the proposed fuzzy rejuvenation method in comparison with state-of-the-art strategies has lower failed web service rate. Through an evaluation, it was shown that our new fault tolerance scheme brings promising improvement on the availability of system. The reason for this improvement versus non-fuzzy approach is the restriction of considering 100% of combination between web service receivers’ request and web service providers’ reliability in non-fuzzy method. The basic disadvantage of regression-based against our method is the reliance on stopping the software system at the time of software rejuvenation in comparison with the proposed method. A large number of unstructured parameters and a constant time inspection trigger considered in Markov regenerative method served to confine it more than our newly proposed method. Despite its efficiency, the ACOGELS-based approach is not as good as the proposed method for dealing with large-scale combinatorial problems because of its time complexity.

Fig. 2
figure 2

Number of failed web services in fuzzy, non-fuzzy, regression-based and inspection-based methods

Despite its relatively desirable performance, this algorithm is barely more appropriate than the newly proposed method due to its time complexity.

Several users request web services with different quality of service parameters. For example, a user asks about a type of service with minimum 70% of availability. According to the proposed fuzzy allocation algorithm aiming to reduce the failed requested web services, the best services that meet the request is found. Some services with poor quality that could not allocate to any requests are found and simultaneously enter the rejuvenation process. In rejuvenation process, the quality parameters of unassigned web services are improved and will be ready to allocate in subsequent requests. In other words, the allocated services that running continuously for a certain time get older and becomes less immune. For this purpose, the proposed algorithm dynamically checked the quality of web services and then it decides which services are suitable for allocating and which of other services should enter into the rejuvenation process.

In the following, the proposed method has been compared against the existing algorithms in terms of runtime as mentioned in Fig. 3. Runtime refers to the amount of time taken for a computer program to perform a task. According to Fig. 3, the runtime of our proposed method has, on average, 21% more than Markov-based, Regression-based, and Non-Fuzzy methods, and 42% less than ACOGELS-based approach.

Fig. 3
figure 3

Performance of the proposed method in terms of time against existing methods

Conclusions

Software rejuvenation is helpful in preventing the failures in the running process of the software. The rejuvenation policies are powerful tools for improvement of the performance in web service-based systems. In this paper, the effective use of fuzzy system for dynamic software rejuvenation was investigated based on the characteristics of service providers and the requirements of service requestors. In addition, the allocation of web services and the threshold for rejuvenation were checked dynamically. Hence, the systems requiring rejuvenation were detected.

We detected systems that required rejuvenation prior to failure and then rejuvenated them. In this study, fuzzy system structures were adopted to identify a suitable web services for allocating and at the same time finding suitable web services for rejuvenation.

The results obtained from the proposed method have on average less than 30% of failed web services in comparison with the well-known previous methods. Furthermore, the runtime is, on average, 21% longer than Markov-based, Regression-based, and Non-Fuzzy methods, and 42% shorter than ACOGELS-based approach.

Contrary to such increase in runtime, the 36% reduction in the number of failed web services on average compared to Non-Fuzzy, Regression-based, and Markov-based approach shows the high fault tolerance of the newly proposed method.

It should be noted that the runtime of the proposed method is slightly high for online environments and requires more hardware overhead. For future work, to overcome this limitation, parallel algorithms can be used. Moreover, other criteria such as reliability and validity can be considered to improve the accuracy of the proposed method and choose the right service providers of web services. Moreover, this method should be considered along with clustering methods for real-world environments where the number of web services and requesters is far higher. We look forward to enhancing the resources allocation process using the other methods of fuzzy multi-criteria decision-making (MCDM) such as fuzzy TOPSIS and fuzzy AHP to optimize resource allocation systems using QoS constraints with multiple resource criteria. Moreover, the proposed mechanism can be enhanced through different thresholding schemes and task priority-based migration scheduling. Additionally, a combination of neural network and fuzzy method is suggested.