hilrap2
Forum Replies Created
-
Hi there,
I’m using the free plugin, version 5.3.2.Has the issue been fixed with latest relase v. 5.4.0. ?
At the moment I’m hassitant to update the plugin as this might overwrite my own fix.Kind regards
Hi edo888,
thank you for the clarification and for taking the time to explain how
gtranslate.phpoperates as a reverse proxy.We understand that
gtranslate.phpprimarily performs network I/O and that, when translations are served from your side, the translation step itself is usually very fast. This is also reflected in our analytics data.For reference, our average translation times are:
- Last year: 22 ms
- Last month: 18 ms
- Last week: 14 ms
So from our perspective, translation performance itself appears consistently fast and stable.
We have also contacted your live chat as suggested and were advised that our request would be forwarded to the plugin author, which we understand to be you. We therefore wanted to follow up in writing with the relevant technical context.
What remains unclear to us is how this behavior is handled under concurrent access patterns.
From our observations:
- During crawl bursts, we see multiple concurrent executions of
gtranslate.php, all blocking incurl_exec() - These executions occur even though the origin is generally responsive under normal load
- The cumulative effect of multiple simultaneous blocking connections leads to PHP-FPM queue buildup and temporary service degradation
In other words, while a single stalled or slow origin fetch may not be problematic, many parallel origin fetches triggered at the same time appear to be the main contributing factor to the issue we are seeing.
To better understand and mitigate this, we would appreciate your guidance on the following:
- Is there any form of request coordination, locking, or reuse to prevent multiple concurrent origin fetches for the same URL?
- Are there recommended or configurable timeout values for the
curlrequests initiated bygtranslate.php? - Are there plugin settings or best practices aimed at reducing the impact of crawl bursts when using URL-based translations?
- Is this concurrency behavior expected, or has there been any recent change in how origin fetches are handled?
Our goal is to ensure stable operation under crawl load while continuing to use URL-based translations, which have been working well for us for several years.
Thank you again for your support. We appreciate your time and look forward to your guidance.
Best regards
Hi edo888,
thank you for the suggestion.
Just to clarify first: do you mean that you plan to add such debug logging to the plugin, or that you are suggesting that we modify the plugin code on our side?
Regarding the suggestion itself: we already have PHP-FPM slow logging enabled, which provides essentially the same information, and in practice even stronger evidence of the issue.
Our PHP-FPM slow logs already show:
- the exact script being executed (
gtranslate.php) - the blocking function (
curl_exec()) - that multiple PHP-FPM workers are blocked concurrently
- that this happens repeatedly within very short time windows
Below is a sanitized excerpt from our PHP-FPM slow log (timestamps and PIDs anonymized, paths shortened):
[time] [pool] pid XXXX script_filename = wp-content/plugins/gtranslate/url_addon/gtranslate.php curl_exec() gtranslate.php:192 [time] [pool] pid YYYY script_filename = wp-content/plugins/gtranslate/url_addon/gtranslate.php curl_exec() gtranslate.php:192 [time] [pool] pid ZZZZ script_filename = wp-content/plugins/gtranslate/url_addon/gtranslate.php curl_exec() gtranslate.php:192What is important here is not a single slow curl call, but the pattern:
- many PHP-FPM workers enter
curl_exec()at the same time - they remain blocked for several seconds
- this exhausts PHP-FPM capacity under crawl bursts
- even though CPU is mostly idle
Because of this, adding additional debug logs for curl calls slower than 1 second would certainly provide more detail, but it would not address the underlying problem. We already know that slow outbound calls occur; the operational issue is that these calls:
- are blocking
- have no request deduplication or locking
- have no fail-fast behavior
- and can run concurrently without an upper bound
The result is PHP-FPM exhaustion and site unavailability, which is what we are trying to prevent.
For this reason, our primary interest is not further diagnosis, but whether there are any plugin-side mitigation options planned, such as:
- configurable or shorter curl timeouts
- reduced or disabled retries
- per-URL locking or cache-stampede protection
- non-blocking or deferred execution for translation fetches
At the moment, the only proposed mitigations appear to be infrastructure scaling or migrating to sub-domains, which is difficult for long-standing, SEO-established sites.
We would appreciate clarification on whether any changes in this direction are planned, or whether the current behavior of URL mode is considered final.
Thanks for your clarification.
Hi,
thank you for your reply.
We have reviewed the GTranslate analytics as suggested. They show a sharp decrease in requests over the last weeks, which correlates with geo-blocking measures we introduced to combat excessive bot traffic. Despite this significant reduction in request volume, the PHP-FPM exhaustion issue persists during crawl bursts.
To address your other points:
- Origin response time: Our origin response time for non-translated pages is stable and has not materially changed. The slowdowns we observe occur specifically when multiple PHP-FPM workers are blocked inside
curl_exec()during GTranslate processing, not due to general site slowness. - Firewall blocking: We have verified that requests are not being blocked mid-flight. Direct access to
gtranslate.phpis explicitly blocked, and Cloudflare logs confirm there are no direct hits to that endpoint. The executions are triggered internally during normal translated page requests. - PHP-FPM limits: Our hosting provider has confirmed that PHP-FPM limits have not been reduced recently.
Given this, the issue does not appear to be explained by increased request volume, slower origin responses, firewall interference, or reduced PHP-FPM capacity.
What remains consistent across multiple affected sites is the following pattern:
- multiple concurrent PHP-FPM workers
- all blocked in
curl_exec() - originating from
wp-content/plugins/gtranslate/url_addon/gtranslate.php(around line 192) - no request deduplication or locking
- blocking outbound calls with a default timeout of up to 60 seconds
As mentioned previously, this setup worked reliably for several years under comparable traffic conditions, and the overload behavior is a recent phenomenon.
To reiterate and clarify the open questions we would appreciate guidance on:
- Are there any recent or planned changes in URL mode that affect how original content is fetched or refreshed under crawl load?
- Is it possible to make outbound HTTP behavior configurable, specifically:
- shorter or configurable curl timeouts
- reduced or disabled retries
- fail-fast behavior under load
- Is there any internal roadmap for making URL mode more resilient to modern crawl patterns (high concurrency, bursty crawlers), without requiring sub-domain migration?
In addition, we would like to suggest the following potential improvements for consideration:
- Introduce per-URL locking or cache-stampede protection so only one PHP-FPM worker performs an origin fetch for a given URL at a time.
- Allow configuration of curl timeouts and retry behavior via plugin settings or constants.
- Provide a non-blocking or deferred execution option for translation fetches to avoid tying up PHP-FPM workers.
- Publish clear guidance on the scalability limits of URL mode, especially for long-standing, SEO-established sites.
We understand the recommendation to increase PHP-FPM processes or migrate to sub-domains. However, for established sites with years of indexed content, these are significant architectural changes, and it is concerning that there are currently no plugin-level mitigations for concurrency and blocking behavior.
We would appreciate clarification on whether improvements in this area are planned, or whether the current behavior is considered the final and expected behavior of URL mode.
Thanks for your time and clarification.
Forum: Plugins
In reply to: [Platy Syncer Woocommerce to Etsy] where do i fill “Craft type *” ?Hi there!
Thank you for this fantastic plugin! We just purchased the Pro-Version.
Unlike so many other plugins we tested, your plugin allows for product sync with already excising Etsy products. The perfect solution for us!What we miss though, is the mapping for category specific product attributes. In our case, this is also specific to fabrics.
The following list of attributes cannot be mapped:Craft type (multiselect)
Primary color
Secondary color
Cut to size
Length (units)
Width (units)
Fat quarters
Hand printed
Microfiber
Organic
Waterproof
Primary fabric
Secondary fabric
Primary fiber
Secondary fiber
Pattern
Fabric technique (multiselect)
Purpose
Occasion
Holiday
Shopping cart summary (required under German law)
Show buyers a price per unit (required under German law)
Domestic & global pricingCould you provide support on this?
(I have also send you an email)Much appreciated!
Hi @mrclayton,
After editing a typo, my post went in for manual moderation… Will try to repost.
Thank you for all your efforts, much appreciated!
Dear @mrclayton,
Thank you very much for the fast response. Let me first state, that from my side there is no harm/accusation intended. You have developed a fantastic plugin, I know how much work this takes. I sincerely hope that we can have a fruitful discussion and solution for this issue.
Thank you also for providing your reasons with regards to this data harvesting by Stripe. You pointed out the legal basis for processing personal data in the GDPR in your link provided above. Thus:
“a) The data subject has given consent to the processing of his or her personal data for one or more specific purposes;”
I don’t know if speak for most shop owners (I suspect it might be common practice for many). In our case, we do obtain consent from our customers with regards to payment processing. This consent, however, does not involve transfer of personal data to Stripe on login or registration in our online-shop and/or WordPress blog. Especially, if no payments are being processed, or different payment options chosen.
In my opinion, neither does §b provide a valid legal basis, which sates:
“The processing is necessary for the performance of a contract to which the data subject is a party or in order to take steps at the request of the data subject prior to entering into a contract;”
For Stripe to pre-obtain personal data from our customer is not necessary for the performance of a contract, if our customer or user has no intention to make a purchase using Stripes payment processing.
Furthermore, you stated:
For performance reasons, the plugin sends the user information to Stripe once your customer has an active account on your WordPress site
In my tests, the plugin sends the user information even prior to activation of a WordPress account, if the WP site uses double-opt-in account registration.
I would very much appreciate if this would be further alleviated to Stripe.
From a GDPR, as well as from a business perspective, we do not want to pre-share our customer and user info with Stripe. We would have to look at alternative payment providers, if this cannot be resolved.