The Community Forums

Interact with an entire community of cPanel & WHM users!
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Troubleshooting high server loads on Linux servers

Discussion in 'General Discussion' started by JeffP., Jan 24, 2013.

  1. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
    Technical support analysts often receive tickets about high server loads. The cause of high server loads is very rarely attributed to defects in the cPanel software or the applications it installs. High server loads are something that should be initially investigated by the server owner, their system administrator, or server provider.

    What causes high server loads?

    Excessive usage of any of the following items can typically cause this issue:

    • CPU
    • memory (including swap)
    • disk I/O

    How can I check these items?

    That depends whether you want to review their current resource usage, or historical resource usage. This tutorial will cover both.

    A brief lesson on "sar"

    Historical resource usage can be viewed using the "sar" utility, which should exist by default on all cPanel servers from the sysstat package. The stats are collected when sysstat runs from cron (/etc/cron.d/sysstat). If crond is not running, sysstat will not be able to collect historical statistics.

    To view resource usage histories from sar, you must provide the path to the file that corresponds with the date of the stats.

    For example, if you wanted to view the load averages for your server from the 23rd of the month, you would run this command:

    Code:
    [user@host ~]$ sar -q -f /var/log/sa/sa23
    The command above uses '-q' to obtain the load average information, and '-f' to specify which sar file to obtain the information from. Note that sar may not have historical data going back more than a week or so.

    You do not need to specify the date when viewing the statistics for the current day. As such, this command would show the load average for today:

    Code:
    [user@host ~]$ sar -q
    You are strongly encouraged to read the documentation for sar:

    Code:
    [user@host ~]$ man sar
    It provides statistics for many things that can be helpful to know about.


    Current CPU usage

    Run "top", and on the line that says "Cpu(s)", check the "%id" section which shows the percentage of which your CPUs are idle. The higher the number the better. A 99% idle CPU is not doing much of anything, and a 1% idle CPU is heavily tasked.

    Code:
    [user@host ~]$ top c
    Tip: hit "P" to sort by processes that are currently consuming the most CPU.

    Historical CPU usage

    Check the "%idle" column:

    Code:
    [user@host ~]$ sar -p
    Current memory usage

    Code:
    [user@host ~]$ free -m
    Tip: run "top c" and hit "M" to see which processes are consuming the most memory.

    Historical memory usage

    This depends on the version of sar, which used to use '-r' to show %memused and %swpused (swap memory used), but later changed to '-S' to show %swpused.

    Check "%memused" and "%swpused":

    Code:
    [user@host ~]$ sar -r
    OR:

    Code:
    [user@host ~]$ sar -r
    Code:
    [user@host ~]$ sar -S

    A note about memory usage: it is normal to see much of the server's memory being used. Why? Because the OS loves to cache things in memory. Why? Because accessing data from memory is extremely fast and far more efficient than using the server's disk(s).

    As such, %memused isn't generally going to be much of an issue (unless perhaps you don't have a swap partition, but that's an issue in and of itself). You should focus on %swpused, which is what gets used when your server's physical memory is full. The lower the number, the better. A %swpused percentage of 0% would mean that your server currently has sufficient physical memory to perform its tasks.

    How much %swpused is too much? That depends on your opinion of "too much". Generally speaking, a consistent low percentage of swap usage may not be an issue on your server. If you observe the %swpused increasing over time (e.g., from 1%, to 7%, to 32%), something on your server is consuming too much memory, and it would be wise to determine what that is (rather than just installing more memory). If your server ends up using all of its physical memory and swap memory, it may become unresponsive, requiring a reboot.

    Current disk I/O usage

    Note: this does not work on OpenVZ/Virtuozzo containers.

    This will print the disk usage statistics 10 times, every 1 seconds. Check the %util column:

    Code:
    [user@host ~]$ iostat -x 1 10
    Historial disk I/O usage

    Code:
    [user@host ~]$ sar -d

    Good system administration involves knowing when your server's load is higher than acceptable. The main reason for this (other than preventing your server from becoming unresponsive and requiring a reboot) is to see what's taking place on the server while the load is high. Fast actions will enable you to troubleshoot the issue while it is occurring.

    If your server's load was high from 2AM - 4AM while you were sleeping, you would have missed what took place. While sar can be helpful to show you what specific resources were high during that time, it won't tell you the cause of the high usage. There can be many causes, including DoS attacks, spam attacks, poorly designed php scripts which consume large amounts of memory, web spiders that crawl sites too aggressively, hardware issues, massive amounts of disk writes to a user's MySQL database, and much, much more.

    The good news is that you can have much of this information collected and sent to you automatically while the load is high, which you can review later as needed. How? From your process list:

    Code:
    [user@host ~]$ ps auxwwwf
    I have created a shell script for this, which is based off of a perl script that I used to run on servers that I managed. It was very useful to me in conjunction with other server monitoring (such as via Nagios). It checks 6 different things (more on this below), and emails you the current process list if any of them exceed your specific threshold.

    This script is not developed, maintained, or supported by cPanel, Inc. Please do not open tickets about this script. If you experience any issues using it and require assistance, you can post a reply here, or consult an experienced system administrator. cPanel cannot provide support for this script.


    The resources that are checked are as follows:

    • 1 minute load average
    • kilobytes of swap used
    • kilobytes of memory usage
    • packets per second inbound
    • packets per second outbound
    • number of processes


    How to use the script

    To run the script automatically, set up a cron job that executes it as often as you'd like. I found every 5 minutes to be a good fit. The script does not need to be run as root, so do not run it as root.

    If one of the resources has exceeded its user defined threshold, the script will send you an email that contains the current process list (ps auxwwwf).

    The subject line of the email will look something like this:

    Code:
    server.example.com [L: 35] [P: 237] [Swap Use: 1% ] [pps in: 54  pps out: 289]
    Each of those items is explained as follows:

    • L - the 1 minute load average
    • P - the number of processes in the process list
    • Swap Usage - the percentage of swap memory being used
    • pps in - packets per second inbound
    • pps out - packets per second outbound

    Before you use the script

    IMPORTANT: You will need to adjust the values to your liking. There are no perfect default values. Why? Because different server environments are, well, different. For example, it may be preferred to set the 1 minute load average threshold higher for a server with 16 CPU cores than a server with just 1.

    NOTE: You will need to add your email address to the "EMAIL" variable. For example:

    Code:
    EMAIL="you@example.com"
    You would also likely want to adjust the following 5 items:

    • MAX_LOAD
    • MAX_SWAP_USED
    • MAX_MEM_USED
    • MAX_PPS_OUT
    • MAX_PPS_IN


    Code:
    #!/bin/sh
    
    export PATH=/bin:/usr/bin
    
    ##########################################################################
    #                                                                        #
    #  Copyright Jeff Petersen, 2009 - 2013                                  #
    #                                                                        #
    #  This program is free software: you can redistribute it and/or modify  #
    #  it under the terms of the GNU General Public License as published by  #
    #  the Free Software Foundation, either version 3 of the License, or     #
    #  (at your option) any later version.                                   #
    #                                                                        #
    #  This program is distributed in the hope that it will be useful,       #
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of        #
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         #
    #  GNU General Public License for more details.                          #
    #                                                                        #
    #  You should have received a copy of the GNU General Public License     #
    #  along with this program.  If not, see <http://www.gnu.org/licenses/>. #
    #                                                                        #
    ##########################################################################
    
    
    ###############################################################################
    # START USER CONFIGURABLE VARIABLES
    ###############################################################################
    
    EMAIL="you@example.com"
    
    # 1 minute load avg
    MAX_LOAD=3
    
    # kB
    MAX_SWAP_USED=1000
    
    # kB
    MAX_MEM_USED=500000
    
    # packets per second inbound
    MAX_PPS_IN=2000
    
    # packets per second outbound
    MAX_PPS_OUT=2000
    
    # max processes in the process list
    MAX_PROCS=400
    
    ###############################################################################
    # END USER CONFIGURABLE VARIABLES
    ###############################################################################
    
    
    IFACE=`grep ETHDEV /etc/wwwacct.conf | awk '{print $2}'`
    if [[ "$IFACE" =~ "venet" ]] ; then
        IFACE=venet0
    fi
    
    IFACE=${IFACE}:
    
    ###############################################################################
    # 1 min load avg
    ###############################################################################
    ONE_MIN_LOADAVG=`cut -d . -f 1 /proc/loadavg`
    echo "1 minute load avg: $ONE_MIN_LOADAVG"
    
    
    ###############################################################################
    # swap used
    ###############################################################################
    SWAP_TOTAL=`grep ^SwapTotal: /proc/meminfo | awk '{print $2}'`
    SWAP_FREE=`grep ^SwapFree: /proc/meminfo | awk '{print $2}'`
    
    let "SWAP_USED = (SWAP_TOTAL - SWAP_FREE)"
    echo "Swap used: $SWAP_USED kB"
    
    
    ###############################################################################
    # mem used
    ###############################################################################
    MEM_TOTAL=`grep ^MemTotal: /proc/meminfo | awk '{print $2}'`
    MEM_FREE=`grep ^MemFree: /proc/meminfo | awk '{print $2}'`
    
    let "MEM_USED = (MEM_TOTAL - MEM_FREE)"
    echo "Mem used: $MEM_USED kB"
    
    
    ###############################################################################
    # packets received
    ###############################################################################
    PACKETS_RX_1=`grep $IFACE /proc/net/dev | awk '{print $2}'`
    sleep 2;
    PACKETS_RX_2=`grep $IFACE /proc/net/dev | awk '{print $2}'`
    
    let "PACKETS_RX = (PACKETS_RX_2 - PACKETS_RX_1) / 2"
    echo "packets received (2 secs): $PACKETS_RX"
    
    
    ###############################################################################
    # packets sent
    ###############################################################################
    PACKETS_TX_1=`grep $IFACE /proc/net/dev | awk '{print $10}'`
    sleep 2;
    PACKETS_TX_2=`grep $IFACE /proc/net/dev | awk '{print $10}'`
    
    let "PACKETS_TX = (PACKETS_TX_2 - PACKETS_TX_1) / 2"
    echo "packets sent (2 secs): $PACKETS_TX"
    
    let "SWAP_USED = SWAP_TOTAL - SWAP_FREE"
    if [ ! "$SWAP_USED" == 0 ] ; then
        PERCENTAGE_SWAP_USED=`echo $SWAP_USED / $SWAP_TOTAL | bc -l`
        TOTAL_PERCENTAGE=`echo ${PERCENTAGE_SWAP_USED:1:2}%`
    else
        TOTAL_PERCENTAGE='0%'
    fi
    
    
    ###############################################################################
    # number of processes
    ###############################################################################
    MAX_PROCS_CHECK=`ps ax | wc -l`
    
    send_alert()
    {
        SUBJECTLINE="`hostname` [L: $ONE_MIN_LOADAVG] [P: $MAX_PROCS_CHECK] [Swap Use: $TOTAL_PERCENTAGE ] [pps in: $PACKETS_RX  pps out: $PACKETS_TX]"
        ps auxwwwf | mail -s "$SUBJECTLINE" $EMAIL
        exit
    }
    
    
    if   [ $ONE_MIN_LOADAVG -gt $MAX_LOAD      ] ; then send_alert
    elif [ $SWAP_USED       -gt $MAX_SWAP_USED ] ; then send_alert
    elif [ $MEM_USED        -gt $MAX_MEM_USED  ] ; then send_alert
    elif [ $PACKETS_RX      -gt $MAX_PPS_IN    ] ; then send_alert
    elif [ $PACKETS_TX      -gt $MAX_PPS_OUT   ] ; then send_alert
    elif [ $MAX_PROCS_CHECK -gt $MAX_PROCS ] ; then send_alert
    fi
    

    Note that the process list output contains several useful columns that pertain to CPU and memory usage for each process:

    • %CPU
    • %MEM
    • VSZ
    • RSS
    • TIME (shows how long a process has existed)

    There are various actions you can take to find the cause of your high server loads. Here is a partial list that will always be incomplete:

    • Check the MySQL process list using "mysqladmin processlist" (or just "mysqladmin pr" for short)
    • Check the MySQL process list using mytop
    • tail your logs! Listening to what your server says is very important. Is your server being brute forced?
    • Run dmesg and check for possible hardware issues
    • Use netstat to view the connections to your server

    Here are some logs to check:

    • syslogs: /var/log/messages, /var/log/secure
    • SMTP logs: /var/log/exim_mainlog, /var/log/exim_rejectlog, /var/log/exim_paniclog
    • POP3/IMAP logs: /var/log/maillog
    • Apache logs: /usr/local/apache/logs/access_log, /usr/local/apache/logs/error_log, /usr/local/apache/logs/suexec_log, /usr/local/apache/logs/suphp_log
    • Website logs: /usr/local/apache/domlogs/ (use this to find sites with traffic in the last 60 seconds: find -maxdepth 1 -type f -mmin -1 | egrep -v 'offset|_log$')
    • cron logs: /var/log/cron


    Please feel free to post questions, comments, and anything else about troubleshooting server loads in this thread, or about the script, or anything else that comes to mind. This post will inevitably be missing some other useful troubleshooting items, and your comments are encouraged.

    I hope you find this useful.

    Thanks!
     
  2. sawbuck

    sawbuck Well-Known Member

    Joined:
    Jan 18, 2004
    Messages:
    1,367
    Likes Received:
    5
    Trophy Points:
    38
    cPanel Access Level:
    Root Administrator
    Thank you Jeff.

    Would like to see more of these from cPanel staff in the future.
     
  3. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
    You're most welcome, sawbuck! I'm glad you've found this helpful.

    If there are any particular topics or general categories that you'd be interested in seeing tutorials made for, post your ideas here and we'll see what can be done!
     
  4. sawbuck

    sawbuck Well-Known Member

    Joined:
    Jan 18, 2004
    Messages:
    1,367
    Likes Received:
    5
    Trophy Points:
    38
    cPanel Access Level:
    Root Administrator
    One topic right off the top is Exim.

    Not sure what has happened to cPanelTristan on the forums (don't see her posting much anymore) but her knowledge of Exim and her ability to help forum users with directives not commonly used was very helpful and much appreciated.

    Thank you Jeff for asking about additional topics.
     
  5. bdegoy

    bdegoy Registered

    Joined:
    Jan 31, 2013
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    cPanel Access Level:
    Root Administrator
    Thank you Jeff for this most valuable tutorial.

    I have installed your script on 2 VPS. The first has a statefull firewall (LFD), the second not.
    The first remains silent, load remains low.
    On the second (no LFD), I am dealing with very high pps in and pps out rates (more than 30000) during minutes. Sometimes the server hangs with 100% disk-swap.
    Is it DDOS? I Obviously should install LFD on the second!

    My question is : how to show the pps in/out in the process list generated by your script?
     
  6. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
    30,000 pps is quite a lot. One way to be sure if it's a DoS or not is to use a sniffer such as tcpdump to see what's happening on the server when all of that traffic is being sent/received. tcpdump will show what traffic is being sent to and from your server. Do you have any automated backup processes that run which upload data to a remote FTP server, or something similar? Does the issue occur at around the same time each day? Those are some things to consider.

    I'm sorry but I don't fully understand. You are wanting to track which process(es) may be sending all of that traffic, correct? The ps command won't be able to show the amount of packets per second involving processes. You'll need to get a packet capture as described above to see what's taking place.
     
  7. bdegoy

    bdegoy Registered

    Joined:
    Jan 31, 2013
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    cPanel Access Level:
    Root Administrator
    I even reached this afternoon :
    [L: 0] [P: 166] [Swap Use: 03% ] [pps in: 10264 pps out: 846835]
    The funny thing is the load was low in this case. In fact, loads remains low as long as swap is low.

    Thanks.

    Yes, at 11PM every day, but well controlled since I limit bandwidth use.

    No, it's variable.

    Ok, I will try to use tcpdump in a similar way you did in your script.

    A new question about the swap : it looks like top is showing always increasing number for used swap. The used number seems never to diminish, always to increase, even if there is free memory. It is the same with your script : Swap use is always the same. For my first VPS (the one with LFD) that keeps cool, Swap use was 8% all the afternoon.

    Many thanks for your advices.
     
  8. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
    That's so much traffic I wonder if the script is getting accurate results from /proc . Do you have any bandwidth graphs to correlate the spike in traffic? Maybe your host has some MRTG graphs they can check or something similar. Does "sar -n DEV" agree with the output from the script for the times that the traffic occurred?

    8% swap is a little high in my opinion, and could either be a sign of something using too much mem, or your server may just need additional physical memory added. You mentioned that there is still some free memory, however. How much is free? Run "free -m" and paste the output here in [ code ] [ /code ] tags (without the spaces).
     
  9. bdegoy

    bdegoy Registered

    Joined:
    Jan 31, 2013
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    cPanel Access Level:
    Root Administrator
    Many thanks for your help Jeff!

    My first VPS (the one with LFD) has high pps out this morning!

    Code:
                 total       used       free     shared    buffers     cached
    Mem:           991        766        224          0         82        169
    -/+ buffers/cache:        515        476
    Swap:         2049        178       1871
    
    About the same time your script says : [L: 0] [P: 242] [Swap Use: 08% ] [pps in: 28266 pps out: 518958]

    And top :
    Code:
    Tasks: 233 total,   1 running, 232 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.7%us,  0.4%sy,  0.0%ni, 92.1%id,  6.2%wa,  0.0%hi,  0.6%si,  0.0%st
    Mem:   1014948k total,   788384k used,   226564k free,    84992k buffers
    Swap:  2099196k total,   182800k used,  1916396k free,   173436k cached
    
    sar -n DEV agrees with your script :
    Code:
    
    Average:           lo      2.10      2.10    321.57    321.57      0.00      0.00      0.00
    ...
    Average:         eth0    482.51    490.71  33730.81 541257.43      0.00      0.00      0.00
    ...
    

    Tanks again,
    Bertrand
     
    #9 bdegoy, Feb 1, 2013
    Last edited: Feb 1, 2013
  10. bdegoy

    bdegoy Registered

    Joined:
    Jan 31, 2013
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    0
    cPanel Access Level:
    Root Administrator
    Hello Jeff,
    - The graph indicates an average 4% of outgoing bandwidth, i.e. 4Mb/s roughly;
    - sar -n DEV shows at the same time txbyt/s = 462974.33 (coherent with 4Mb/s);
    - meanwhile (or around) tcpdump shows :
    478350 bytes/s (coherent)
    26208 packets in 38s, i.e. 690pps
    - around this time, your script gave pps out : 368507 and pps out : 520448

    I am afraid that pps out are bytes/s instead of pps.


    Following Jeff's advice to use tcpdump, I have found the origin of the problem. I discovered that somebody was over-using anonymous FTP.

    For who may be interested, this is how I have done :
    - log to the server as root with a SSH console;
    - create a file somewhere on the server with root ownership, say /etc/log/tcpdump.log and chmod it 644;
    - run :
    tcpdump -w /var/log/tcpdump.log -i eth0
    - when you feel you have enough data, stop tcpdump with Ctrl-C;
    - download tcpdump.log on your local box;
    - use Wireshark (Wireshark · Go deep.) to analyze the file (it is raw data, you can't read it directly); File -> Open your downloaded tcpdump.log;
    - You probably will see something wrong. In my case, Statistics -> Conversations -> TCP : 757 showed a lot of trafic with a single IP.


    I still have to understand the swap problem.

    Thank you again Jeff
    Bertrand
     
    #10 bdegoy, Feb 1, 2013
    Last edited: Feb 1, 2013
  11. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
    Hi Bertrand,

    Thank you for your updates. I'm happy to hear that helped! Another way to use tcpdump which you may find even quicker is this:

    Code:
    # tcpdump -i any -nn > tcpdump.log
    That will output a plain text file called tcpdump.log which can be viewed directly from the shell with commands such as less, more, vi, nano, etc. If you just want to capture a certain amount of packets, use the -c option as well (e.g., -c 1000).

    I'm pretty sure I know what the pps/bytes issue is (a space after the device name in /proc/net/dev). Can you please paste (or PM me) the output of these commands?

    Code:
    # cat /var/cpanel/envtype
    # cat /etc/redhat-release
    # arch
    # cat /proc/net/dev
    # grep ^ETHDEV /etc/wwwacct.conf
    
    If I had to guess, I'd say you're not using OpenVZ/Virtuozzo or Xen, and your ETHDEV isn't eth0 (all of which is fine; I'm just trying to understand which environments may contain different output). If you can paste or send me that info, I would be very grateful.

    Thanks!
     
  12. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
    The script can be run from anywhere, by any user. It is not recommended to run it as root, since it is not necessary to do so.
     
  13. jcncnc

    jcncnc Member

    Joined:
    Oct 10, 2010
    Messages:
    6
    Likes Received:
    0
    Trophy Points:
    1
    Thanks Jeff. I'll give it a try soon. I really appreciate all your great help!

    Jonathan
     
  14. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
  15. theG

    theG Member

    Joined:
    Mar 10, 2012
    Messages:
    12
    Likes Received:
    0
    Trophy Points:
    1
    cPanel Access Level:
    Root Administrator
    Hi Jeff,

    Very useful Information. Man you rocks!!!

    Please write a post on exim also.................:p

    Thanks once again,
    G
     
  16. XyBoRg

    XyBoRg Member

    Joined:
    Mar 10, 2013
    Messages:
    7
    Likes Received:
    1
    Trophy Points:
    1
    cPanel Access Level:
    Root Administrator
    I am newbie in this...

    How can i run the script? I put the code in a file called monitor.sh

    Then i type in shell:

    sh /path/to/file/monitor.sh

    and i received this errors:

    : command not found
    : command not found
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    : command not found:
    'onitor.sh: line 123: syntax error near unexpected token `
    'onitor.sh: line 123: `send_alert()
     
  17. JeffP.

    JeffP. Well-Known Member

    Joined:
    Sep 28, 2010
    Messages:
    164
    Likes Received:
    10
    Trophy Points:
    18
    Hi XyBoRg,

    It sounds like the contents of the file are not correct. The very first line should be this:

    Code:
    #!/bin/sh
    I just pasted the code into a script and ran it, and verified that it still works ok. You may need to manually review the file on your server to be sure that it pasted properly.
     
  18. XyBoRg

    XyBoRg Member

    Joined:
    Mar 10, 2013
    Messages:
    7
    Likes Received:
    1
    Trophy Points:
    1
    cPanel Access Level:
    Root Administrator
    Hi Jeff,

    I copied the code carefully, it's all exactly as you have posted. All that I put it in a file called monitor.sh, then from SSH console run the file as follows:

    sh / path / to / file / monitor.sh

    And I get the same error:

    I must have some special library installed on my server or give any special permission to the file or the user?
     
  19. quietFinn

    quietFinn Well-Known Member

    Joined:
    Feb 4, 2006
    Messages:
    998
    Likes Received:
    10
    Trophy Points:
    18
    Location:
    Finland
    cPanel Access Level:
    Root Administrator
    The file is in wrong format.

    Try this:
    If you don't have dos2unix you can install it:
     
    NCHOST and JeffP. like this.
  20. XyBoRg

    XyBoRg Member

    Joined:
    Mar 10, 2013
    Messages:
    7
    Likes Received:
    1
    Trophy Points:
    1
    cPanel Access Level:
    Root Administrator
    PERFECT!!!!:D

    Works fine now... Than you very much.
     
    NCHOST likes this.
Loading...

Share This Page