আমি এটি প্রথমে /programming/9665189/php-on-command-line-displays-out-of-memory এ পোস্ট করেছি তবে পরিবর্তে এখানে পোস্ট করার পরামর্শ দেওয়া হয়েছিল।
কোনও স্ক্রিপ্টে আপনি যখন মেমরি হারিয়ে ফেলেন তখন এটি কোনও সাধারণ মারাত্মক ত্রুটি নয়, কারণ এটি কোনও ফাইলের নাম, একটি লাইন নম্বর বা ব্যবহৃত মেমরির পরিমাণ দেয় না। এটি কেবল "মেমরির বাইরে" বলে যখনই আমি কমান্ড লাইনে পিএইচপি চালানোর চেষ্টা করি, আপনি যখন এটি কোনও স্ক্রিপ্ট পাস করেন বা কেবল পিএইচপি নিজেই চালান। এমনকি যে স্ক্রিপ্টটি বিদ্যমান নেই এটি চালানোর চেষ্টা করা একই বার্তা দেয়।
অন্য কথায় আমি এটি পেয়েছি:
dan@server [~]# php
Out of memory
dan@server [~]# php test.php
Out of memory
dan@server [~]# php doesntexist.php
Out of memory
dan@server [~]# php -v
Out of memory
তবে অ্যাপাচের মাধ্যমে পিএইচপি পুরোপুরি সূক্ষ্মভাবে কাজ করে। এটি কেবলমাত্র সিএলআই-তে রয়েছে যে আমি এই ত্রুটিটি পেয়েছি।
প্রশ্নযুক্ত মেশিনটি সেন্টোস রিলিজ 5.7 (ফাইনাল) যা 64 বিট এবং পিএইচপি 5.3.10 চলছে। এটি একটি ডেডিকেটেড সার্ভার।
আমি প্রস্তাবিত হিসাবে ডান হিসাবে উলিমিট চালানোর চেষ্টা করেছি এবং এটি আউটপুট:
core file size (blocks, -c) 200000
data seg size (kbytes, -d) 200000
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 37888
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) 200000
open files (-n) 100
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 35
virtual memory (kbytes, -v) 200000
file locks (-x) unlimited
মূল থেকে মুক্ত-এম এটি দেয়:
total used free shared buffers cached
Mem: 3824 3714 110 0 142 2632
-/+ buffers/cache: 939 2885
Swap: 3490 0 3490
এবং উপর থেকে মেমরির ব্যবহার:
Mem: 3916648k total, 3797056k used, 119592k free, 145820k buffers
Swap: 3574452k total, 168k used, 3574284k free, 2686844k cached
আপডেট: গতকাল সার্ভারটি পুনরায় শুরু হয়েছে এবং এটি বিকেলে বাকি কাজ করেছে। যাইহোক, আজ এটি একই জিনিস করছে।
"স্ট্রেস পিএইচপি টেস্ট.এফপি" চালিত (একটি ফাইল যা বিদ্যমান) এটি বেশ কিছুক্ষণ চলতে পারে তবে শেষ পৃষ্ঠা বা পুট্টিতে এটি ছিল:
fstat(3, {st_mode=S_IFREG|0644, st_size=100030, ...}) = 0
mmap(NULL, 100030, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2ad3ce0af000
close(3) = 0
open("/lib64/libnss_dns.so.2", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\17\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=23736, ...}) = 0
mmap(NULL, 2113792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = -1 ENOMEM (Cannot allocate memory)
close(3) = 0
munmap(0x2ad3ce0af000, 100030) = 0
alarm(0) = 0
futex(0x3d80e07b20, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x3d80e079a0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x3d7fe94760, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x3d7fe94c10, FUTEX_WAKE_PRIVATE, 2147483647) = 0
stat("/etc/krb5.conf", {st_mode=S_IFREG|0644, st_size=608, ...}) = 0
open("/proc/filesystems", O_RDONLY) = 3
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 314
close(3) = 0
open("/etc/krb5.conf", O_RDONLY) = 3
open("/proc/filesystems", O_RDONLY) = 4
read(4, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 314
close(4) = 0
access("/etc/krb5.conf", W_OK) = -1 EACCES (Permission denied)
fstat(3, {st_mode=S_IFREG|0644, st_size=608, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad3ce0af000
read(3, "[logging]\n default = FILE:/var/l"..., 4096) = 608
read(3, "", 4096) = 0
close(3) = 0
munmap(0x2ad3ce0af000, 4096) = 0
open("/dev/urandom", O_RDONLY) = 3
fstat(3, {st_mode=S_IFCHR|0444, st_rdev=makedev(1, 9), ...}) = 0
read(3, "\300\260\36co\363cI\t\355\324\3518gy\354\357\314Z:", 20) = 20
close(3) = 0
futex(0x3d7f624640, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/proc/filesystems", O_RDONLY) = 3
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 314
close(3) = 0
open("/etc/krb5.keytab", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/proc/filesystems", O_RDONLY) = 3
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 314
close(3) = 0
futex(0x3d8122d0c0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
stat("/dev/urandom", {st_mode=S_IFCHR|0444, st_rdev=makedev(1, 9), ...}) = 0
brk(0x340b000) = 0x340b000
brk(0x342c000) = 0x340b000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = -1 ENOMEM (Cannot allocate memory)
write(2, "Out of memory\n", 14Out of memory
) = 14
exit_group(1) = ?
সম্পাদনা: সোনাসির অনুরোধ অনুসারে আউটপুট যুক্ত করা হয়েছে।
সম্পূর্ণ লগটি http://www.2shared.com/file/05MVRFI6/dmp.html এ উপলব্ধ
বিড়াল / প্রক / মেমিনফো থেকে আউটপুট:
MemTotal: 3916648 kB
MemFree: 501180 kB
Buffers: 335276 kB
Cached: 2312536 kB
SwapCached: 0 kB
Active: 1312888 kB
Inactive: 1702096 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 3916648 kB
LowFree: 501180 kB
SwapTotal: 3574452 kB
SwapFree: 3574292 kB
Dirty: 728 kB
Writeback: 0 kB
AnonPages: 367160 kB
Mapped: 33640 kB
Slab: 351564 kB
PageTables: 18588 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 5532776 kB
Committed_AS: 1188280 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 265828 kB
VmallocChunk: 34359471827 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
পিএইচপি টেস্ট.এফপি চালানোর পরে ক্যাট / প্রোক / মেমিনফো থেকে আউটপুট নীচে। আমি এখানে সার্ভারের আইপি ঠিকানাটি প্রতিস্থাপন করেছি কারণ এটি একটি সর্বজনীন আইপি - xxx.xxx.xxx.11 সার্ভারের প্রধান আইপি এবং xxx.xxx.xxx.12 অন্য আইপি।
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=3 ID=271 PROTO=UDP SPT=10170 DPT=33437 LEN=12
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=89.39.188.210 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=47199 DF PROTO=TCP SPT=2119 DPT=4899 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=89.39.188.210 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=47678 DF PROTO=TCP SPT=2119 DPT=4899 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=89.39.188.210 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=48675 DF PROTO=TCP SPT=2119 DPT=4899 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=16299 DF PROTO=TCP SPT=3185 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.12 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=16300 DF PROTO=TCP SPT=3186 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.12 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=17038 DF PROTO=TCP SPT=3186 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=198.60.169.59 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=116 ID=17073 DF PROTO=TCP SPT=3185 DPT=5555 WINDOW=16384 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=188.254.224.225 DST=xxx.xxx.xxx.12 LEN=48 TOS=0x00 PREC=0x00 TTL=113 ID=39888 PROTO=TCP SPT=59828 DPT=5900 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *TCP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=188.254.224.225 DST=xxx.xxx.xxx.11 LEN=48 TOS=0x00 PREC=0x00 TTL=113 ID=43041 PROTO=TCP SPT=59828 DPT=5900 WINDOW=65535 RES=0x00 SYN URGP=0
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=269 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=269 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=2 ID=270 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=2 ID=270 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=3 ID=271 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=93.191.199.110 DST=xxx.xxx.xxx.11 LEN=32 TOS=0x00 PREC=0x00 TTL=3 ID=271 PROTO=UDP SPT=10202 DPT=33437 LEN=12
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=65.111.170.208 DST=xxx.xxx.xxx.11 LEN=444 TOS=0x00 PREC=0x00 TTL=52 ID=0 DF PROTO=UDP SPT=5105 DPT=5060 LEN=424
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=65.111.170.208 DST=xxx.xxx.xxx.12 LEN=443 TOS=0x00 PREC=0x00 TTL=52 ID=0 DF PROTO=UDP SPT=5105 DPT=5060 LEN=423
TCP: Treason uncloaked! Peer 82.129.64.220:5306/59348 shrinks window 3410313698:3410313754. Repaired.
Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=00:23:ae:8f:59:78:30:37:a6:da:d2:e9:08:00 SRC=223.203.192.53 DST=xxx.xxx.xxx.12 LEN=1500 TOS=0x00 PREC=0x00 TTL=47 ID=2742 PROTO=UDP SPT=0 DPT=0 LEN=44665
বিড়াল / ইত্যাদি / সুরক্ষা / লিমিটস.কোনফ দেখায় যে সমস্ত মন্তব্য করা হয়েছে যতদূর আমি বলতে পারি:
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
এবং বিড়াল /etc/sysctl.conf এর আউটপুট:
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
সম্পাদনা: মূল হিসাবে নয় ড্যান হিসাবে চালানোর জন্য উপরের উলিমিট আপডেট করেছে।
strace php
meminfo
, limits.conf
, dmesg
এবং sysctl.conf
সব বর্ণন স্বাভাবিক (আসলে খুব মান)। সুতরাং আমি পিএইচপি বাইনারি নিজেই, বা একটি এক্সটেনশন (সম্ভবত পিএইচপি এর ভিন্ন সংস্করণের জন্য সংকলিত) নিয়ে একটি সমস্যা ধরে নেব। আপনি যে পিএইচপি এক্সটেনশানগুলি ইনস্টল করেছেন তার একটি তালিকাও সরবরাহ করতে পারেন (যেমন: এপিসি / ই্যাকসিলারেটর / এক্সডিবাগ ইত্যাদি)।