Re: 回复: PHP Performance/Scalability
| From: | Deepak Goel | Date: | Thu, 28 Oct 2021 13:27:12 +0000 |
| Subject: | Re: 回复: PHP Performance/Scalability | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327797@lists.php.net to get a copy of this message | ||
Hello Shiplu
The resources mentioned by you are not a bottleneck. There is plenty of it
available.
Deepak
"The greatness of a nation can be judged by the way its animals are treated
- Mahatma Gandhi"
+91 73500 12833
deicool@gmail.com
Facebook: https://www.facebook.com/deicool
LinkedIn: www.linkedin.com/in/deicool
"Plant a Tree, Go Green"
Make In India : http://www.makeinindia.com/home
On Thu, Oct 28, 2021 at 2:15 PM shiplu <shiplu.net@gmail.com> wrote:
> Hello Deepak,
>
> If the code itself has a performance problem then it would show up even
> when the concurrency is 1. But it shows the issue when concurrency hits
> 1500. From 1 to 1500 there is the number when the response time starts to
> increase. That's where the problem arises. You mentioned it worked when
> increased the number of VMs. Check the system resource statistics when you
> are requesting to multiple VMs and a single VM.
>
> It can happen that a metric is very high when you are using a single VM
> solution with 1500 concurrent requests. And the same metric would be very
> low in horizontal scaling setup. Some of these metrics can be
> 1. CPU
> 2. Memory
> 3. IOWait time
> 4. Request Queue size
> 5. Open file descriptors
> This is a metric you need to find out yourself. Once you find the metric
> you'll know horizontal scaling made it possible to lower it. Then for
> vertical scaling, you just need to increase that.
>
>
> ―
> Shiplu.Mokadd.im
> Senior Unix Hacker
>
> *Innovation distinguishes between follower and leader*
> — Steve Jobs
>
>
> *An expert is a person who has made all the mistakes that can be made in a
> very narrow field.*— Niels Bohr
>
>
> On Thu, Oct 28, 2021 at 9:35 AM Deepak Goel <deicool@gmail.com> wrote:
>
>> We are using CodeIgniter 3.1.
>>
>>
>> Deepak
>> "The greatness of a nation can be judged by the way its animals are
>> treated - Mahatma Gandhi"
>>
>> +91 73500 12833
>> deicool@gmail.com
>>
>> Facebook: https://www.facebook.com/deicool
>> LinkedIn: www.linkedin.com/in/deicool
>>
>> "Plant a Tree, Go Green"
>>
>> Make In India : http://www.makeinindia.com/home
>>
>>
>> On Thu, Oct 28, 2021 at 1:03 PM Torsten Rosenberger <
>> rosenberger@taoweb.at> wrote:
>>
>>>
>>> >
>>> > Some thoughts:
>>> >
>>> > 1. We are using a simple SQL Query in the code
>>> > $data = $this->db->select('user_id,email')
>>> > ->where(array('email' => $email_address))
>>> > ->order_by('user_id', 'DESC')
>>> > ->limit(1)
>>> > ->get('users')
>>> > ->row_array();
>>> looks like you are using laraval
>>>
>>> so i would start with $start =
>>> microtime(true);
>>>
>>> run you db code and the microtime(true) - $start;
>>>
>>> and
>>> compare this when you rewrite the code with native mysqli functions
>>> like
>>> mysqli_query
>>>
>>> I know this is work but so you can get the feeling which
>>> one is faster.
>>> In small application you use frameworks but there could
>>> be cases where a normal function ist much faster as writing a class
>>> >
>>> >
>>> > 2. We are using mysqli
>>> >
>>> > 3. The SQL Query takes time in msec. And the Database is not a
>>> > performance bottleneck
>>> That could be OK for the database. But as in point 1. so the query
>>> could be fast but the layer above could be slow.
>>>
>>> I thing when you
>>> compare the code sections with microtime you will find the part eating
>>> the time in the script.
>>> >
>>> > 4. We use mostly images with <img src="">
>>> >
>>> > 5. We have seen fpm outperform mod_php
>>> >
>>> > 6. The Java code accesses the same database (The database is on a
>>> > seperate physical server). Also the queries are the same in Java as
>>> > well PHP
>>> >
>>> > 7. I will try instrumenting the entire PHP code and see where the
>>> > bottleneck is.
>>> >
>>> > Deepak
>>> > "The greatness of a nation can be judged by the way its animals are
>>> > treated - Mahatma Gandhi"
>>> >
>>> > +91 73500 12833
>>> > deicool@gmail.com
>>> >
>>> > Facebook: https://www.facebook.com/deicool
>>> > LinkedIn: www.linkedin.com/in/deicool
>>> >
>>> > "Plant a Tree, Go Green"
>>> >
>>> > Make In India : http://www.makeinindia.com/home
>>> >
>>> >
>>> > On Thu, Oct 28, 2021 at 11:23 AM Torsten Rosenberger <
>>> > rosenberger@taoweb.at> wrote:
>>> > > Hello Deepak
>>> > >
>>> > > I think PHP-FPM had heavily reduce the concurrency of PHP.
>>> > > > PHP should immediately implement a API like WSGI/ASGI in python.
>>> > > It
>>> > > > is very simple but very useful.
>>> > > >
>>> > > > ------------------ 原始邮件 ------------------
>>> > > > 发件人: "Deepak Goel" <deicool@gmail.com>;
>>> > > > 发送时间: 2021年10月26日(星期二) 晚上11:15
>>> > > > 收件人: "Alex"<al-php@none.at>;
>>> > > > 抄送: "php-general General
>>> > > > List"<php-general@lists.php.net>;"Deepak
>>> > > > Sharma"<deepak@techxp.tech>;
>>> > > > 主题: Re: PHP Performance/Scalability
>>> > > >
>>> > > > Hi
>>> > > >
>>> > > > The code is fairly simple. It contains a few images and a simple
>>> > > SQL
>>> > > > query (The same code in Java gives superb performance). We have
>>> > > an
>>> > > > Apache Web Server in front of php as of now. And I will try out
>>> > > this
>>> > > > (https://github.com/spiral/roadrunner).
>>> > >
>>> > > We are talking about a blackbox.
>>> > > The code is simple ?
>>> > >
>>> > > How long take's
>>> > > the sql query ?
>>> > > What do you use to access the database PDO or mysqli ?
>>> > > Y
>>> > > ou wrote java is faster. Your java code access the same database ?
>>> > >
>>> > > You wrote a few images ?
>>> > > Do you only show the images with <img src="">
>>> > > or are you converting them for thumbnails etc.
>>> > >
>>> > > A long time ago there was a great presentation from Rasmus about
>>> > > PHP
>>> > > Performance.
>>> > >
>>> > > So a simple query on my Server's with mod_php and mysql
>>> > > takes 0.0001 to 0.0008 seconds. If the simple query takes 0.01
>>> > > Second
>>> > > which looks fast but php have to wait for the DB. So there you can
>>> > > loose factor 100 in the req/sec.
>>> > >
>>> > > Why are you using fpm and not the mod_php part in apache ?
>>> > > OPcache is
>>> > > active ?
>>> > >
>>> > > There are a lot of parameters we don't know.
>>> > >
>>> > > If you benchmark
>>> > > your code with an easy microtime(true) call to see how long your
>>> > > script
>>> > > takes.
>>> > > If you store the data in a file when you run your benchmark you
>>> > > can maybe see if a code part is waiting for the database or
>>> > > something
>>> > > else.
>>> > > So that the bottleneck ist not php.
>>> > >
>>> > > So i would go through the code
>>> > > with microtime() an look what takes long and then go deepter.
>>> > >
>>> > > if the
>>> > > code is heavy and the result dosen't change or a refresh after 5
>>> > > min is
>>> > > ok you can use the APCu cache or so on.
>>> > >
>>> > > If your code is super fast an still slow requests then you have to
>>> > > strace the apache process to see if there is something miss
>>> > > configured.
>>> > >
>>> > >
>>> > > So as a PHP developer we cann't accept that Java is faster :)
>>> > >
>>> > > BR/Torsten
>>> > >
>>> > > > Thanks.
>>> > > >
>>> > > > Deepak
>>> > > > "The greatness of a nation can be judged by the way its animals
>>> > > are
>>> > > > treated - Mahatma Gandhi"
>>> > > >
>>> > > > +91 73500 12833
>>> > > > deicool@gmail.com
>>> > > >
>>> > > > Facebook:
>>> > > > https://www.facebook.com/deicool
>>> > > > LinkedIn: www.linkedin.com/in/deicool
>>> > > >
>>> > > > "Plant a Tree, Go Green"
>>> > > >
>>> > > > Make In India :
>>> > > > http://www.makeinindia.com/home
>>> > > >
>>> > > >
>>> > > > On Tue, Oct 26, 2021 at 5:15 PM Alex <al-php@none.at> wrote:
>>> > > > > Hi.
>>> > > > >
>>> > > > > On 26.10.21 11:53, Deepak Goel wrote:
>>> > > > > > Hello
>>> > > > > >
>>> > > > > > I have a very simple PHP application which I develop on
>>> > > Apache-
>>> > > > > Web-Server. However the application does
>>> > > > > > not scale beyond 1500 concurrent users (150 requests/sec),
>>> > > even
>>> > > > > though there is plenty of hardware
>>> > > > > > available (CPU is getting utilized 15%, Memory is getting
>>> > > > > utilized 15%).
>>> > > > > >
>>> > > > > > On a similar note, when I develop the same application in
>>> > > Java,
>>> > > > > it scales to more than 6000 concurrent
>>> > > > > > users (600 requests/sec) on the same hardware.
>>> > > > > >
>>> > > > > > Any pointers on how to address this scalability issue?
>>> > > > >
>>> > > > > The question is how "simple" is the PHP Code?
>>> > > > > Maybe you can tune the Code or use another Server in front of
>>> > > PHP
>>> > > > > FPM like haproxy, Caddy, nginx?
>>> > > > > Maybe you can try to run
>>> > > > > https://github.com/spiral/roadrunner
>>> > > to
>>> > > > > execute the PHP Code.
>>> > > > >
>>> > > > > Jm2c
>>> > > > >
>>> > > > > Regards
>>> > > > > Alex
>>> > > > >
>>> > > > > > Thanks!
>>> > > > > >
>>> > > > > > Deepak
>>> > > > > > "The greatness of a nation can be judged by the way its
>>> > > animals
>>> > > > > are treated - Mahatma Gandhi"
>>> > > > > >
>>> > > > > > +91 73500 12833
>>> > > > > > deicool@gmail.com
>>> > > > > > <mailto:deicool@gmail.com>
>>> > > > > >
>>> > > > > > Facebook:
>>> > > > > > https://www.facebook.com/deicool <
>>> > > > >
>>> > > > > https://www.facebook.com/deicool>
>>> > > > > > LinkedIn: www.linkedin.com/in/deicool <
>>> > > > >
>>> > > > > http://www.linkedin.com/in/deicool>
>>> > > > > >
>>> > > > > > "Plant a Tree, Go Green"
>>> > > > > >
>>> > > > > > Make In India :
>>> > > > > > http://www.makeinindia.com/home <
>>> > > > > http://www.makeinindia.com/home>
>>> > > > >
>>> > >
>>>
>>>