greenplum gpadmin-[FATAL]:-Unknown host - greenplum

when I set up greenplum, I used the command gpinitsystem -c gpinitsystem_config
[gpadmin#w01v ~]$ gpinitsystem -c gpinitsystem_config
20160603:16:50:49:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20160603:16:50:50:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Reading Greenplum configuration file gpinitsystem_config
20160603:16:50:50:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Locale has not been set in gpinitsystem_config, will set to default value
20160603:16:50:50:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Locale set to en_US.utf8
20160603:16:50:51:013336 gpinitsystem:w01v:gpadmin-[INFO]:-No DATABASE_NAME set, will exit following template1 updates
20160603:16:50:51:013336 gpinitsystem:w01v:gpadmin-[INFO]:-MASTER_MAX_CONNECT not set, will set to default value 250
20160603:16:50:51:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Checking configuration parameters, Completed
20160603:16:50:52:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Commencing multi-home checks, please wait...
...
20160603:16:50:52:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Configuring build for standard array
20160603:16:50:52:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Commencing multi-home checks, Completed
20160603:16:50:53:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Building primary segment instance array, please wait...
......
20160603:16:50:56:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Building group mirror array type , please wait...
......
20160603:16:51:01:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Checking Master host
20160603:16:51:01:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Checking new segment hosts, please wait...
............
20160603:16:51:13:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Checking new segment hosts, Completed
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Greenplum Database Creation Parameters
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:---------------------------------------
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master Configuration
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:---------------------------------------
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master instance name = wl_measure
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master hostname = w01v.white.xxx.xxx.net
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master port = 5432
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master instance dir = /home/gpadmin/masterdata/gpseg-1
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master LOCALE = en_US.utf8
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Greenplum segment prefix = gpseg
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master Database =
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master connections = 250
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master buffers = 128000kB
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Segment connections = 750
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Segment buffers = 128000kB
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Checkpoint segments = 8
20160603:16:51:14:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Encoding = UNICODE
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Postgres param file = Off
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Initdb to be used = /usr/local/greenplum-db/./bin/initdb
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-GP_LIBRARY_PATH is = /usr/local/greenplum-db/./lib
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Ulimit check = Passed
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Array host connect type = Single hostname per node
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Master IP address [1] = 10.143.13.158
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Standby Master = w01v.white.bjcc.qihoo.net
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Primary segment # = 2
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Standby IP address = 10.143.13.158
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Total Database segments = 6
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Trusted shell = ssh
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Number segment hosts = 3
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Mirror port base = 43000
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Replicaton port base = 34000
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Mirror replicaton port base= 44000
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Mirror segment # = 2
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Mirroring config = ON
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Mirroring type = Group
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:----------------------------------------
20160603:16:51:15:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Greenplum Primary Segment Configuration
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:----------------------------------------
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w01v /home/gpadmin/segmentdata/gpseg0 33000 2 0 34000
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w01v /home/gpadmin/segmentdata/gpseg1 33001 3 1 34001
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w02v /home/gpadmin/segmentdata/gpseg2 33000 4 2 34000
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w02v /home/gpadmin/segmentdata/gpseg3 33001 5 3 34001
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w03v /home/gpadmin/segmentdata/gpseg4 33000 6 4 34000
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w03v /home/gpadmin/segmentdata/gpseg5 33001 7 5 34001
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:---------------------------------------
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Greenplum Mirror Segment Configuration
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:---------------------------------------
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w02v /home/gpadmin/segdatamirror/gpseg0 43000 8 0 44000
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w02v /home/gpadmin/segdatamirror/gpseg1 43001 9 1 44001
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w03v /home/gpadmin/segdatamirror/gpseg2 43000 10 2 44000
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w03v /home/gpadmin/segdatamirror/gpseg3 43001 11 3 44001
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w01v /home/gpadmin/segdatamirror/gpseg4 43000 12 4 44000
20160603:16:51:16:013336 gpinitsystem:w01v:gpadmin-[INFO]:-w01v /home/gpadmin/segdatamirror/gpseg5 43001 13 5 44001
Continue with Greenplum creation Yy/Nn>
y
20160603:16:51:45:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Building the Master instance database, please wait...
20160603:16:52:04:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Starting the Master in admin mode
20160603:16:52:28:gpinitsystem:w01v:gpadmin-[FATAL]:-Unknown host /usr/local/greenplum-db/. Script Exiting!
20160603:16:52:28:013336 gpinitsystem:w01v:gpadmin-[WARN]:-Script has left Greenplum Database in an incomplete state
20160603:16:52:28:013336 gpinitsystem:w01v:gpadmin-[WARN]:-Run command /bin/bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_20160603_165049 to remove these changes
20160603:16:52:28:013336 gpinitsystem:w01v:gpadmin-[INFO]:-Start Function BACKOUT_COMMAND
20160603:16:52:28:013336 gpinitsystem:w01v:gpadmin-[INFO]:-End Function BACKOUT_COMMAND
It returns
gpinitsystem:w01v:gpadmin-[FATAL]:-Unknown host
Can anybody helps me ? Thanks

20160603:16:52:28:gpinitsystem:w01v:gpadmin-[FATAL]:-Unknown host /usr/local/greenplum-db/. Script Exiting!
This line indicates that you have denoted "/usr/local/greenplum-db/" as a hostname. Check your hostfile or configuration files.

make sure you have no extra spaces before or after your hostname(S) in the host file.

Make entries in host file. And try to share or ping hostname. To check it's working

Problem Description
You can edit the "$GPHOME/bin/gpinitsystem" file.
After :

Related

Extracting 1 file from vmdk archive

so I have a .vmdk archive that is created by Memu (android emulator) , and I need to extract one file from it using command line.
I am able to do it using 7zip GUI drag and drop, but from the command line it does not work. Open for any other options besides 7zip!
Thank you!
Below is the output using the command-
7z.exe l D:\vms\MEmu\MEmu96-2022102700023FFF-disk2.vmdk
C:\Program Files\7-Zip>7z.exe l
D:\vms\MEmu\MEmu96-2022102700023FFF-disk2.vmdk
7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21
Scanning the drive for archives: 1 file, 3719291904 bytes (3547 MiB)
Listing archive: D:\vms\MEmu\MEmu96-2022102700023FFF-disk2.vmdk
-- Path = D:\vms\MEmu\MEmu96-2022102700023FFF-disk2.vmdk Open WARNING: Can not open the file as [VMDK] archive Type = VHD Physical Size =
3719291904 Offset = 0 Created = 2022-05-28 03:49:29 Cluster Size =
2097152 Method = Dynamic Total Physical Size = 3719291904 Creator
Application = vbox 6.1 Host OS = Windows Saved State = - ID =
19112220CCCCCCCCCCCC000000000000
---- Size = 68826850816 Packed Size = 3718250496 Created = 2022-05-28 03:49:29
-- Path = MEmu96-2022102700023FFF-disk2.mbr Type = MBR Physical Size = 68826850816
Date Time Attr Size Compressed Name
..... 1048576 1048576 0.img
..... 1048576 1048576 1.img
..... 68823705088 68823705088 2.img
68825802240 68825802240 3 files
Warnings: 1

MariaDB Parallel Replication Performance Tuning Issues

This is my first ever post so would appreciate some guidance. Situation is as below,
Replicating from VM A (Main Production Serer) to VM B (Slave used mainly for DB Replica and generating a few reports and also replicating down the stream to 2 other testing servers)
VM A Cofig:
32GB vRAM
8 vCPU (some Xeon CPU running at 2.4GHz)
1.5TB SSD
Windows Server 2012 R2
Production Applicaton running on XAMPP using Apache & MariaDB 10.1.38
VM B Config:
16GB vRAM
4 vCPU (same variant as VM A)
300 GB SSD
Same Windows Server 2012 R2 as VM A
Using the same platform as VM A- XAMPP with Apache & MariaDB 10.1.38
Problem:
No matter what settings I use, parallel replication just doesn't work like it should. Seconds behond master is continuously increasing. I've tried various values for binlog_commit_wait_count & binlog_commit_wait_usec as well but to no avail. At 1 or 2 combos, the group commit ratio increases a little but then eventually reduces again to <1.05. Settings for my.ini for the slave VM B is pasted below,
my.ini:
key_buffer = 8M
max_allowed_packet = 32M
#was 256M
sort_buffer_size = 16M
#was 2M
net_buffer_length = 8K
read_buffer_size = 8M
#was 256K then 4M then 8M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 4M
query_cache_size=512M
query_cache_limit = 128M
#didn't exist, was 64M
join_buffer_size=128M
#didn't exist
thread_cache_size = 32
table_open_cache = 20000
#didn't exist
tmp_table_size = 256M
#didn't exist
max_heap_table_size = 256M
#didn't exist
log_error = "mysql_error.log"
expire_logs_days=30
log_bin_trust_function_creators = 1
slave-skip-errors = 1062,1060,1032
connect_timeout=100
max_connections = 2000
skip-host-cache
#skip-name-resolve
#innodb_force_recovery = 1
slave_parallel_threads = 4
#slave_parallel_workers = 4
slave_parallel_mode=optimistic
slave_domain_parallel_threads=4
slave_compressed_protocol = 1
#slave_parallel_max_queued = 131072
#slave_parallel_max_queued=16777216
server-id = 101
binlog-format = mixed
log-bin=mysql-bin
relay-log = mysql-relay-bin
log-slave-updates = 1
report_host=slave-main-replication-server
sync_binlog=1
#binlog_commit_wait_count = 30
binlog_commit_wait_count = 25
binlog_commit_wait_usec = 100000
innodb_buffer_pool_size = 8G
#was 2560M
#innodb_additional_mem_pool_size = 32M
innodb-buffer-pool-instances=4
#didn't exist
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_io_capacity=1000
#default 200
innodb_io_capacity_max=3000
Any ideas would be appreciated. I've gone through dozens of posts and wikis and everything else inbetween of whatever I could find on the subject but none of them helped. I've tried setting "sync_binlong=0" as well, nothing happened. Is it just the CPU cores causing a bottleneck? I'm all out of ideas. Been trying to solve this for almost 2 months now. Please help.

How to extract all rows, for which row a particular criteria is met? Details in description

I am trying to load a set of policy numbers in my Target based on below criteria using Informatica PowerCenter.
I want to select all those rows of policy numbers, for which policy the Rider = 0
This is my source: -
Policy Rider Plan
1234 0 1000
1234 1 1010
1234 2 3000
9090 0 2000
9090 2 2545
4321 3 2000
4321 1 2000
Target should look like this: -
Policy Rider Plan
1234 0 1000
1234 1 1010
1234 2 3000
9090 0 2000
9090 2 2545
The policy number 4321 would not be loaded.
If I use filter as Rider = 0, then I miss out on below rows: -
1234 1 1010
1234 2 3000
9090 0 2000
9090 2 2545
What would be ideal way to load this kind of data using PowerCenter Designer?
Take the same source in one more qualifier in same mapping, use a filter as Rider=0 to get list of unique policy numbers that has Rider=0, then use a joiner with your regular source on policy number. This should work.
Another method, sort your data based on policy and Rider, and use variable ports with condition similar to below.
v_validflag=IIF(v_policy_prev!=policy, IIF(Rider=0, 'valid','invalid'), v_validflag)
v_policy_prev=policy
Then filter valid records.
There are many options. Here are two...
First:
It'll look like:
// AGGREGATOR \\
SOURCE >> SOURCE QUALIFIER >> SORTER << >> JOINER >> TARGET
\\============//
Connect all ports from Source Qualifier (SQ) to SORTER transformation (or sort in SQ itself) and define sorting Key for ‘Policy’ and ‘Rider’. After that split stream into two pipelines:
- Connect ‘Policy’ and ‘Rider’ to FILTER transformation and filter records by ‘Rider’ = 0. - After that link ‘Policy’ (only) to AGGREGATOR and set Group By to ‘YES’ for ‘Policy’. - Add a new port with FIRST or MAX function for ‘Policy’ port. This is to remove duplicate ‘Policy’-es.- Indicate ‘Sorted Input’ in the AGGREGATOR properties.- After that link ‘Policy’ from AGR to JOINER as Master in Port tab.
2.- Second stream, from SORTER, directly link to above JOINER (with aggregated ‘Policy’) as Detail. - Indicate ‘Sorted Input’ in the JOINER properties. - Set Join Type as ‘Normal Join’ and Join Condition as POLICY(master)=POLICY(detail) in JOINER properties.
... Target
Second option:
Just Override SQL in Source Qualifier...
WITH PLC as (
select POLICY
from SRC_TBL
where RIDER=0)
select s.POLICY, s.RIDER, s.PLAN
from PLC p left JOIN SRC_TBL s on s.POLICY = p.POLICY;
may vary depend on your source table constructions...

How to query a URL (DNS lookup) using Windows terminal?

I am trying to use Windows' command line in order to query http:BL using their API (link) but can't seem to fine a command to do what I want.
I thought I should use something like:
ping secretkey.7.1.1.127.dnsbl.httpbl.org
But I'm only getting:
[1] ""
[2] "Pinging secretkey.7.1.1.127.dnsbl.httpbl.org [127.1.1.7] with 32 bytes of data:"
[3] "Reply from 127.1.1.7: bytes=32 time<1ms TTL=128"
[4] "Reply from 127.1.1.7: bytes=32 time<1ms TTL=128"
[5] "Reply from 127.1.1.7: bytes=32 time<1ms TTL=128"
[6] "Reply from 127.1.1.7: bytes=32 time<1ms TTL=128"
[7] ""
[8] "Ping statistics for 127.1.1.7:"
[9] " Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),"
[10] "Approximate round trip times in milli-seconds:"
[11] " Minimum = 0ms, Maximum = 0ms, Average = 0ms"
Or
ping -a secretkey.7.1.1.127.dnsbl.httpbl.org
But neither seem to give me the desired output.
Any suggestion on which command to use?
UPDATE.
Using:
nslookup -debug secretkey.7.1.1.127.dnsbl.httpbl.org
I got:
Non-authoritative answer:
------------ Got answer: HEADER:
opcode = QUERY, id = 1, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0 QUESTIONS:
1.1.168.192.in-addr.arpa, type = PTR, class = IN AUTHORITY RECORDS: -> 168.192.in-addr.arpa
ttl = 86399 (23 hours 59 mins 59 secs)
primary name server = dns.netvision.net.il
responsible mail addr = hostmaster.netvision.net.il
serial = 2011010100
refresh = 1800 (30 mins)
retry = 900 (15 mins)
expire = 604800 (7 days)
default TTL = 604800 (7 days) ------------ Server: UnKnown Address: 192.168.1.1 ------------ Got answer: HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 3, additional = 3 QUESTIONS:
secretkey.7.1.1.127.dnsbl.httpbl.org, type = A, class = IN ANSWERS: -> secretkey.7.1.1.127.dnsbl.httpbl.org
internet address = 127.1.1.7
ttl = 300 (5 mins) AUTHORITY RECORDS: -> dnsbl.httpbl.org
nameserver = ns2.httpbl.org
ttl = 300 (5 mins) -> dnsbl.httpbl.org
nameserver = ns3.httpbl.org
ttl = 300 (5 mins) -> dnsbl.httpbl.org
nameserver = ns1.httpbl.org
ttl = 300 (5 mins) ADDITIONAL RECORDS: -> ns1.httpbl.org
internet address = 209.124.55.46
ttl = 300 (5 mins) -> ns2.httpbl.org
internet address = 66.114.104.118
ttl = 300 (5 mins) -> ns3.httpbl.org
internet address = 81.17.242.92
ttl = 300 (5 mins) ------------ ------------ Got answer: HEADER:
opcode = QUERY, id = 3, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0 QUESTIONS:
secretkey.7.1.1.127.dnsbl.httpbl.org, type = AAAA, class = IN AUTHORITY RECORDS: -> dnsbl.httpbl.org
ttl = 1162 (19 mins 22 secs)
primary name server = dnsbl.httpbl.org
responsible mail addr = dnsadmin.projecthoneypot.org
serial = 1397664327
refresh = 7200 (2 hours)
retry = 7200 (2 hours)
expire = 604800 (7 days)
default TTL = 3600 (1 hour) ------------ Name: secretkey.7.1.1.127.dnsbl.httpbl.org Address: 127.1.1.7 >
You're looking for nslookup:
nslookup -debug secretkey.7.1.1.127.dnsbl.httpbl.org
Among other information, this part is what you're looking for:
ANSWERS:
-> secretkey.7.1.1.127.dnsbl.httpbl.org
internet address = 127.1.1.7
ttl = 21236
An answer like 127.1.1.7 in blacklists usually means it's a positive. No answer would be a negative.

Lighttpd slow downloads

I have a dedicated server with 1GB/s dedicated, 4GB ram and 4cpus. I have static files for download (from 300mb to 900mb). I was testing over Apache, Nginx and Lighttpd.
Apache makes too many threats and after 200 connections it goes very high so apache it's a NO GO...
Nginx after 100 connections it goes very high so it's a NO GO either.
Lighttpd so far is very good as is a single-threaded server. With 500 concurrent connections the load stays at 0.90 - 1.10 (very good) but I'm facing a download speed problem, it goes slower even when I have 1GBps dedicated port, I see the iptraf and with 500 concurrent connections it goes no more than 250000 KB/s. With apache and nginx sometimes it went to 700000 KB/s the upstream in the server. I switched between sendfile and writev in the config and it has the same result.
I'm not using any php or fast-cgi, just straight download directly to the file, for example: http://www.myserver.com/file.zip and it downloads the file.
I will attach some info here for you to help me figure it out.
Kernel 2.6
lighttpd.conf
# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $
############ Options you really have to take care of ####################
## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules = (
# "mod_rewrite",
# "mod_redirect",
# "mod_alias",
"mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
# "mod_auth",
# "mod_status",
# "mod_setenv",
# "mod_proxy_core",
# "mod_proxy_backend_http",
# "mod_proxy_backend_fastcgi",
# "mod_proxy_backend_scgi",
# "mod_proxy_backend_ajp13",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
# "mod_cgi",
# "mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_expire",
# "mod_secdownload",
# "mod_rrdtool",
"mod_accesslog" )
## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root = "/usr/share/nginx/html/"
## where to send error-messages to
server.errorlog = "/www/logs/lighttpd.error.log"
# files to check for if .../ is requested
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm" )
## set the event-handler (read the performance section in the manual)
# server.event-handler = "freebsd-kqueue" # needed on OS X
server.event-handler = "linux-sysepoll"
#server.network-backend = "linux-sendfile"
server.network-backend = "writev"
# mimetype mapping
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar"
)
# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr = "enable"
## send a different Server: header
## be nice and keep it at lighttpd
# server.tag = "lighttpd"
#### accesslog module
accesslog.filename = "/www/logs/access.log"
## deny access the file-extensions
#
# ~ is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
# of the document-root
url.access-deny = ( "~", ".inc" )
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}
##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
######### Options that are good to be but not neccesary to be changed #######
## bind to port (default: 80)
#server.port = 81
## bind to localhost (default: all interfaces)
#server.bind = "grisu.home.kneschke.de"
## error-handler for status 404
#server.error-handler-404 = "/error-handler.html"
#server.error-handler-404 = "/error-handler.php"
## to help the rc.scripts
#server.pid-file = "/var/run/lighttpd.pid"
###### virtual hosts
##
## If you want name-based virtual hosting add the next three settings and load
## mod_simple_vhost
##
## document-root =
## virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
## virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
#simple-vhost.default-host = "grisu.home.kneschke.de"
#simple-vhost.document-root = "/pages/"
##
## Format: <errorfile-prefix><status-code>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix = "/home/weigon/projects/lighttpd/doc/status-"
## virtual directory listings
#dir-listing.activate = "enable"
## enable debugging
#debug.log-request-header = "enable"
#debug.log-response-header = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found = "enable"
#debug.log-condition-handling = "enable"
### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = "/"
## change uid to <uid> (default: don't care)
#server.username = "wwwrun"
## change uid to <uid> (default: don't care)
#server.groupname = "wwwrun"
#### compress module
#compress.cache-dir = "/tmp/lighttpd/cache/compress/"
#compress.filetype = ("text/plain", "text/html")
#### proxy module
## read proxy.txt for more info
#$HTTP["url"] =~ "\.php$" {
# proxy-core.balancer = "round-robin"
# proxy-core.allow-x-sendfile = "enable"
# proxy-core.protocol = "http"
# proxy-core.backends = ( "192.168.0.101:80" )
# proxy-core.max-pool-size = 16
#}
#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
#$HTTP["url"] =~ "\.php$" {
# proxy-core.balancer = "round-robin"
# proxy-core.allow-x-sendfile = "enable"
# proxy-core.check-local = "enable"
# proxy-core.protocol = "fastcgi"
# proxy-core.backends = ( "unix:/tmp/php-fastcgi.sock" )
# proxy-core.max-pool-size = 16
#}
#### CGI module
#cgi.assign = ( ".pl" => "/usr/bin/perl",
# ".cgi" => "/usr/bin/perl" )
#
#### SSL engine
#ssl.engine = "enable"
#ssl.pemfile = "server.pem"
#### status module
#status.status-url = "/server-status"
#status.config-url = "/server-config"
#### auth module
## read authentication.txt for more info
#auth.backend = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"
#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
#auth.backend.ldap.filter = "(uid=$)"
#auth.require = ( "/server-status" =>
# (
# "method" => "digest",
# "realm" => "download archiv",
# "require" => "user=jan"
# ),
# "/server-config" =>
# (
# "method" => "digest",
# "realm" => "download archiv",
# "require" => "valid-user"
# )
# )
#### url handling modules (rewrite, redirect, access)
#url.rewrite = ( "^/$" => "/server-status" )
#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
# url.redirect = ( "^/(.*)" => "http://%1/$1" )
#}
#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
#### expire module
#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
#### ssi
#ssi.extension = ( ".shtml" )
#### rrdtool
#rrdtool.binary = "/usr/bin/rrdtool"
#rrdtool.db-name = "/var/www/lighttpd.rrd"
#### setenv
#setenv.add-request-header = ( "TRAV_ENV" => "mysql://user#host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )
## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
# trigger-before-download.trigger-url = "^/trigger/"
# trigger-before-download.download-url = "^/download/"
# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
# trigger-before-download.trigger-timeout = 10
## for mod_cml
## don't forget to add index.cml to server.indexfiles
# cml.extension = ".cml"
# cml.memcache-hosts = ( "127.0.0.1:11211" )
#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"
## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")
#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"
#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1
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
# These ensure that TIME_WAIT ports either get reused or closed fast.
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1
# TCP memory
net.core.rmem_max = 16777216
net.core.rmem_default = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
# For Large File Hosting Servers
net.core.wmem_max = 1048576
#net.ipv4.tcp_wmem = 4096 87380 524288
net.ipv4.tcp_wmem = 4096 524288 16777216
Actual top command
top - 16:15:57 up 6 days, 19:30, 2 users, load average: 1.05, 0.85, 0.83
Tasks: 143 total, 1 running, 142 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.6%us, 2.8%sy, 0.0%ni, 64.7%id, 30.8%wa, 0.0%hi, 1.1%si, 0.0%st
Mem: 3914664k total, 3729404k used, 185260k free, 1676k buffers
Swap: 8388600k total, 9984k used, 8378616k free, 3340832k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28590 root 20 0 518m 75m 71m D 13.1 2.0 1:12.24 lighttpd
28660 root 20 0 15016 1104 812 R 1.9 0.0 0:00.02 top
1 root 20 0 19328 620 396 S 0.0 0.0 0:03.74 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.14 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.12 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.32 migration/1
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
9 root 20 0 0 0 0 S 0.0 0.0 0:01.96 ksoftirqd/1
10 root RT 0 0 0 0 S 0.0 0.0 0:00.19 watchdog/1
11 root RT 0 0 0 0 S 0.0 0.0 0:01.00 migration/2
12 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/2
13 root 20 0 0 0 0 S 0.0 0.0 5:04.44 ksoftirqd/2
14 root RT 0 0 0 0 S 0.0 0.0 0:00.23 watchdog/2
15 root RT 0 0 0 0 S 0.0 0.0 0:00.50 migration/3
16 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/3
17 root 20 0 0 0 0 S 0.0 0.0 0:01.84 ksoftirqd/3
18 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
iostat
Linux 2.6.32-220.7.1.el6.x86_64 (zlin) 05/01/2012 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.57 0.00 3.95 30.76 0.00 64.72
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 109.58 38551.74 149.33 22695425748 87908220
netstat -an |grep :80 |wc -l
259
iptraf
247270.0 kbits/sec
What should I change to make the clients download faster, they said sometimes it downloads slower than 10 KB/s
So it appears disk I/O is your problem from looking at top and iostat. You've used up all the disk cache and the system is waiting for data to be read in from disk before it can send it out the NIC.
The first thing I would try is to change to:
server.network-backend = "linux-sendfile"
as that will improve buffer usage (a bit, not as much as it should).
You can do a back of the envelope calculation of how much memory you would need to cache your typical work load (simplistically just add together the sizes of your most 100 popular files). I'm guessing that it's going to be a lot more than the 4GB of memory that you have so the next thing to do would be to either get faster disk drives or more memory.
This is why people use Content Delivery Networks (CDNs) to deliver large amounts of bandwidth (which often comes in the form of large files).
The problem here isn't your web server, it's that HTTP is really not designed as a file download protocol. It's the Hyper Text Transport Protocol, and many of the decisions around HTTP focus on the Hyperlinked Text aspect- file sizes are expected to be small, under a few dozen Kb and certainly under a Mb. The web infrastructure takes advantage of this fact in a lot of their approaches to data caching, etc. Instead of using HTTP for something it really isn't designed for, I would recommend looking at using a different transport mechanism.
FTP: File Transfer Protocol. FTP was designed specifically to transfer files of arbitrary size, and doesn't make the same assumptions as HTTP software. If all you are doing is static downloads, your web page HTML can link to the static files with an ftp:// link, and configuring an FTP server to allow anonymous download is usually straightforward. Check your FTP server's docs for details. Browsers since IE6/FF2 have supported basic FTP natively- the average user will have no different workflow than usual. This is probably not the best approach, as FTP was designed long before HTTP, and as Perry mentioned, long before we had half a gig files.
CDN: Using a content delivery network like Amazon's S3 doesn't technically get around using HTTP, but it lets you not have to worry about your users overloading your server like you're seeing.
BitTorrent: If your users are a bit more tech savy, consider setting your server up to seed the static file indefinitely, then publish magnet links on your site. In the worst case, a single user will experience a direct download from your server, using a protocol that actually knows how to handle large files. In the best case, your hundreds of users will both leech and seed eachother, drastically reducing your server's load. Yes, this required your users to know how to run and configure bittorrent, which is probably not the case, but it's an interesting paradigm for file downloads none the less.

Resources