0

i have 32gb ram running on redhat. I am using this server dedicated to querying a list in the database and processing them using php from cron.

# free -m
              total        used        free      shared  buff/cache   available
Mem:          32261       31401         281         289         579         237
Swap:         10215       10154          61

below are my php configs

# cat /opt/SP/php7/etc/php.ini
[PHP]
max_input_vars = 5000
session.save_path="/var/SP/prod/shared/lib/session"

[HIDE_PHP_VERSION]
expose_php = Off

[EXTENSIONS]
extension_dir="/opt/SP/php7/lib/php/extensions/no-debug-non-zts-20180731"

[ERROR_HANDLING_AND_LOGGING]
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off

[RESOURCE_LIMITS]
memory_limit = 512M
post_max_size = 32M

[MODULES]
extension=oci8.so

[LANGUAGE_OPTIONS]
ignore_user_abort = On

[FILE_UPLOADS]
max_file_uploads = 1
upload_max_filesize = 24M

[COOKIES]
session.cookie_secure = True
session.gc-probability = 0

[LOGGING]
error_log = syslog

[cURL]
curl.cainfo="/opt/SP/php7/etc/cacert.pem"



# cat /opt/SP/php7/etc/php-fpm.conf
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;

[global]

;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;

error_log = /opt/SP/php7/var/log/php-fpm.log
include = /opt/SP/php7/etc/php-fpm.d/*.conf


# cat /opt/SP/php7/etc/php-fpm.d/php-fpm.conf
[www]

user = wwwrun
group = www

listen = 127.0.0.1:9000

pm = static
pm.max_children = 400
pm.start_servers = 15
pm.min_spare_servers = 10
pm.max_spare_servers = 20

pm.status_path = /status/php-fpm




top - 12:09:12 up 48 days,  1:27,  1 user,  load average: 2.26, 1.41, 1.19
Tasks: 644 total,   2 running, 642 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.7 us,  1.4 sy,  0.0 ni, 96.7 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 33036044 total,   237356 free, 32216980 used,   581708 buff/cache
KiB Swap: 10461180 total,    59972 free, 10401208 used.   172100 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
48644 wwwadm    20   0 1007168 433440   1592 S   0.0  1.3   5:20.89 php
48653 wwwadm    20   0  973568 421420   2948 S   0.0  1.3   4:33.10 php
21179 wwwadm    20   0  952396 419352   2960 S   1.0  1.3   2:43.65 php
43888 wwwadm    20   0  959004 417176   1756 S   0.0  1.3   4:09.42 php
43788 wwwadm    20   0 1009516 414936   1820 S   0.0  1.3   6:07.42 php
 8836 wwwadm    20   0  960720 407296   4880 S   0.0  1.2   1:44.64 php
43928 wwwadm    20   0  936784 401724   6960 S   0.0  1.2   3:22.17 php
21160 wwwadm    20   0  930060 393212   2480 S   0.0  1.2   2:39.77 php
44959 wwwadm    20   0  964984 380596   1760 S   0.0  1.2   5:00.72 php
47859 wwwadm    20   0  919456 372392   2360 S   0.0  1.1   5:38.07 php
 8656 wwwadm    20   0  871112 370204   7144 S   0.0  1.1   1:36.08 php
43098 wwwadm    20   0  949720 369700   1788 S   0.0  1.1   6:59.59 php
 8842 wwwadm    20   0  870328 365104   4948 S   0.0  1.1   1:35.45 php
 8814 wwwadm    20   0  871108 364364   5240 S   0.0  1.1   1:40.37 php
47038 wwwadm    20   0  909032 361924   1660 S   0.0  1.1   6:23.22 php
45017 wwwadm    20   0  922280 356532   1816 S   0.0  1.1   3:47.43 php
49368 wwwadm    20   0  985144 351912   1792 S   0.0  1.1   3:41.05 php
45115 wwwadm    20   0  947448 346696   1704 S   0.0  1.0   3:37.00 php
48681 wwwadm    20   0  917968 343176   1752 S   0.0  1.0   4:08.51 php
46955 wwwadm    20   0  891980 341460   1672 S   0.0  1.0   4:47.66 php
46983 wwwadm    20   0  887288 341388   1728 S   0.0  1.0   3:35.27 php
47919 wwwadm    20   0  879076 338164   1660 S   0.0  1.0   4:02.88 php
49387 wwwadm    20   0  877652 336528   1628 S   0.0  1.0   3:37.26 php
43155 wwwadm    20   0  877488 334720   2088 S   0.0  1.0   9:51.60 php
48692 wwwadm    20   0  849656 323388   1588 S   0.0  1.0   3:45.80 php
49397 wwwadm    20   0  968240 318980   1648 S   0.0  1.0   9:13.06 php
44019 wwwadm    20   0  964316 317212   2284 S   0.0  1.0   3:48.66 php
44929 wwwadm    20   0  900132 314892   1656 S   0.0  1.0   3:43.12 php
43925 wwwadm    20   0  844208 307964   4244 S   0.0  0.9   4:16.07 php
47878 wwwadm    20   0  829616 307512   1568 S   0.0  0.9   3:48.02 php
15854 wwwadm    20   0  768504 303412   2316 S   0.0  0.9   0:39.82 php
15899 wwwadm    20   0  769224 303280   2168 S   0.0  0.9   0:41.05 php
42989 wwwadm    20   0  863108 302040   2480 S   0.0  0.9  16:49.68 php
43948 wwwadm    20   0  913744 292900   1924 S   0.0  0.9   3:57.97 php
36520 wwwadm    20   0  809812 291736   4988 S   0.0  0.9   4:08.14 php
36385 wwwadm    20   0  849400 291388   2140 S   0.0  0.9   3:07.14 php
49378 wwwadm    20   0  866720 288552   1720 S   0.0  0.9  11:54.63 php
49426 wwwadm    20   0  915296 284500   1840 S   0.0  0.9   9:12.31 php
46012 wwwadm    20   0  989008 283204   2020 S   0.3  0.9   3:13.75 php
47897 wwwadm    20   0  859716 281960   1600 S   0.0  0.9   3:29.92 php
36529 wwwadm    20   0  911704 281936   4988 S   0.0  0.9   2:59.11 php
48672 wwwadm    20   0  782348 280448   2644 S   1.3  0.8   5:22.95 php
48528 wwwadm    20   0  896124 277804   1780 S   0.0  0.8   3:38.22 php
21141 wwwadm    20   0  777600 277184   1780 S   0.0  0.8   2:19.44 php
shorif2000
  • 357
  • 1
  • 7
  • 26
  • The fact that it's using swap might not affect the performance. You need to check swap in/outs and disk I/O where swap is located. What is the real problem you are trying to solve? The big picture. – Mircea Vutcovici Mar 16 '21 at 12:54

3 Answers3

0

You can do few things:

  1. Optimize your code so it not use so much memory
  2. Run less instances in parallel
  3. Try with swappiness=1 (for more info you can check this answer)
Romeo Ninov
  • 3,195
  • 2
  • 13
  • 16
0

I am using this server dedicated to querying a list in the database ...

Is there anything that you can do to improve the performance of that query or of the processing applied to the result set?

... processing them using php from cron ...

Since you're using cron, I assume that you're invoke this process periodically.
Could it be that the first instance of it is taking "too long" to run and the second is being started while the first is still running which, depending on what they're both doing, will make both of them run more slowly.
And then the third instance gets started ... and so on ...

Phill W.
  • 1,336
  • 7
  • 7
0

I would set pm.max_children between 70-75 You have 32GB RAM. 2-4GB I would reserver for OS (e.g. file system cache) and web server (e.g. apache, nginx..). The rest I would use for php. PHP seems to use about 400MB of physical memory per instance (some of it is shared so you should look more for pss, not for rss, but, to simplify we will use rss).

(32000-2000)/400=75
(32000-4000)/400=70
Mircea Vutcovici
  • 16,706
  • 4
  • 52
  • 80