Re: Continuing issues... Can't vacuum!

Lists: pgsql-admin
From: Carol Walter <walterc(at)indiana(dot)edu>
To: pgsql-admin(at)postgresql(dot)org
Subject: Continuing issues... Can't vacuum!
Date: 2008-05-23 17:54:02
Message-ID: 5897F703-1525-477B-8749-80A0A4E0A656@indiana.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Hello,

I posted yesterday about a corrupt index. I'm continuing to
experience problems. I know that part of my problem is that the
databases have not been vacuumed as they should have been. I've
tried to vacuum them but it's not working. The message I'm getting
is as follows:

vacuumdb: vacuuming database "km"
NOTICE: number of page slots needed (2275712) exceeds max_fsm_pages
(200000)
HINT: Consider increasing the configuration parameter
"max_fsm_pages" to a value over 2275712.

The problem is I've found the max_fsm_pages parameter in the
postgresql.conf file, but changing it doesn't seem to be having any
effect. So I'm going to ask some questions that are probably pretty
silly, but I hope you'll help me. First of all, perhaps the
postgresql.conf file that I am editing may not be the one that is
being read when the database server starts. There are several
postgresql.conf files on this system. How do I tell which one is the
one being read?

The max_fsm_pages parameter says what the minimum setting is in the
file. Is there also a maximum?

I can't back up my database with the error right now, because of the
error. I have a backup but I'm afraid to restore it. I feel like I
have many indices that are bloated and I want to get the databases
vacuumed before I start trying to create and load a new database.
I'm concerned that there won't be enough index space for the system
to sort and copy the indices.

Please, help.

Carol


From: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
To: Carol Walter <walterc(at)indiana(dot)edu>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 18:00:22
Message-ID: 1211565622.17493.24.camel@jd-laptop
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

On Fri, 2008-05-23 at 13:54 -0400, Carol Walter wrote:
> Hello,

> vacuumdb: vacuuming database "km"
> NOTICE: number of page slots needed (2275712) exceeds max_fsm_pages
> (200000)
> HINT: Consider increasing the configuration parameter
> "max_fsm_pages" to a value over 2275712.
>
> The problem is I've found the max_fsm_pages parameter in the
> postgresql.conf file, but changing it doesn't seem to be having any
> effect.

You have to restart the database.

> So I'm going to ask some questions that are probably pretty
> silly, but I hope you'll help me. First of all, perhaps the
> postgresql.conf file that I am editing may not be the one that is
> being read when the database server starts. There are several
> postgresql.conf files on this system. How do I tell which one is the
> one being read?

Woah... :)

>From psql: show config_file;

> The max_fsm_pages parameter says what the minimum setting is in the
> file. Is there also a maximum?
>

It is limited by your shared memory but consider that is not your
problem. Your problem is you don't vacuum enough. My suggestion is to do
the following:

Up the max_fsm_pages a considerable amount
Restart
Vacuum the entire database
backup
reinitialize with backup
make sure you are vacuuming properly.

Sincerely,

Joshua D. Drake


From: Jeff Frost <jeff(at)frostconsultingllc(dot)com>
To: Carol Walter <walterc(at)indiana(dot)edu>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 18:02:34
Message-ID: 483706BA.1080403@frostconsultingllc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Carol Walter wrote:
>
> vacuumdb: vacuuming database "km"
> NOTICE: number of page slots needed (2275712) exceeds max_fsm_pages
> (200000)
> HINT: Consider increasing the configuration parameter "max_fsm_pages"
> to a value over 2275712.
>
> The problem is I've found the max_fsm_pages parameter in the
> postgresql.conf file, but changing it doesn't seem to be having any
> effect. So I'm going to ask some questions that are probably pretty
> silly, but I hope you'll help me. First of all, perhaps the
> postgresql.conf file that I am editing may not be the one that is
> being read when the database server starts. There are several
> postgresql.conf files on this system. How do I tell which one is the
> one being read?
>
Carol,

Do the following in psql:

show config_file;

You should get some output like so:

config_file
-------------------------------------
/var/lib/pgsql/data/postgresql.conf
(1 row)

Go forth and edit that file. :-)
> The max_fsm_pages parameter says what the minimum setting is in the
> file. Is there also a maximum?
>
I'm not sure I understand the question. max_fsm_pages is the maximum
number of pages to be used in the free space map. See Jim Nasby's
article here: http://decibel.org/~decibel/pervasive/fsm.html
> I can't back up my database with the error right now, because of the
> error. I have a backup but I'm afraid to restore it. I feel like I
> have many indices that are bloated and I want to get the databases
> vacuumed before I start trying to create and load a new database. I'm
> concerned that there won't be enough index space for the system to
> sort and copy the indices.
What's the error? All I see in this email is a warning about
max_fsm_pages and that should not stop you from doing a pg_dump.

--
Jeff Frost, Owner <jeff(at)frostconsultingllc(dot)com>
Frost Consulting, LLC http://www.frostconsultingllc.com/
Phone: 650-780-7908 FAX: 650-649-1954


From: Carol Walter <walterc(at)indiana(dot)edu>
To: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 18:35:19
Message-ID: 3C9DB43B-9B3D-4E55-B4DE-37E83A1CA136@indiana.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Oh, yes. I have restarted it several times - or at least I thought
that I did. Actually, it's not stopping. I grepped for "post" after
I did the stop and it is still running. I really don't like the idea
of issuing the kill command on the database processes. Is there
another option?

Carol
On May 23, 2008, at 2:00 PM, Joshua D. Drake wrote:

>
>
> On Fri, 2008-05-23 at 13:54 -0400, Carol Walter wrote:
>> Hello,
>
>> vacuumdb: vacuuming database "km"
>> NOTICE: number of page slots needed (2275712) exceeds max_fsm_pages
>> (200000)
>> HINT: Consider increasing the configuration parameter
>> "max_fsm_pages" to a value over 2275712.
>>
>> The problem is I've found the max_fsm_pages parameter in the
>> postgresql.conf file, but changing it doesn't seem to be having any
>> effect.
>
> You have to restart the database.
>
>> So I'm going to ask some questions that are probably pretty
>> silly, but I hope you'll help me. First of all, perhaps the
>> postgresql.conf file that I am editing may not be the one that is
>> being read when the database server starts. There are several
>> postgresql.conf files on this system. How do I tell which one is the
>> one being read?
>
> Woah... :)
>
>> From psql: show config_file;
>
>
>> The max_fsm_pages parameter says what the minimum setting is in the
>> file. Is there also a maximum?
>>
>
> It is limited by your shared memory but consider that is not your
> problem. Your problem is you don't vacuum enough. My suggestion is
> to do
> the following:
>
> Up the max_fsm_pages a considerable amount
> Restart
> Vacuum the entire database
> backup
> reinitialize with backup
> make sure you are vacuuming properly.
>
> Sincerely,
>
> Joshua D. Drake
>
>
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin


From: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
To: Carol Walter <walterc(at)indiana(dot)edu>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 18:39:40
Message-ID: 1211567980.17493.36.camel@jd-laptop
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

On Fri, 2008-05-23 at 14:35 -0400, Carol Walter wrote:
> Oh, yes. I have restarted it several times - or at least I thought
> that I did. Actually, it's not stopping. I grepped for "post" after
> I did the stop and it is still running. I really don't like the idea
> of issuing the kill command on the database processes. Is there
> another option?
>

pg_ctl -D /path/to/data/dir -m fast stop

Sincerely,

Joshua D. Drake


From: Carol Walter <walterc(at)indiana(dot)edu>
To: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 18:52:46
Message-ID: DC21DF01-8565-41A9-BD41-0B4B8535A259@indiana.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Does this do an orderly, safe stop? Also do I then bring it back up
with the usual command?

Thanks,
Carol

On May 23, 2008, at 2:39 PM, Joshua D. Drake wrote:

>
>
> On Fri, 2008-05-23 at 14:35 -0400, Carol Walter wrote:
>> Oh, yes. I have restarted it several times - or at least I thought
>> that I did. Actually, it's not stopping. I grepped for "post" after
>> I did the stop and it is still running. I really don't like the idea
>> of issuing the kill command on the database processes. Is there
>> another option?
>>
>
> pg_ctl -D /path/to/data/dir -m fast stop
>
> Sincerely,
>
> Joshua D. Drake
>
>


From: "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>
To: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>, "Carol Walter" <walterc(at)indiana(dot)edu>
Cc: <pgsql-admin(at)postgresql(dot)org>
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 18:58:42
Message-ID: 4836CDEA.EE98.0025.0@wicourts.gov
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

>>> Carol Walter <walterc(at)indiana(dot)edu> wrote:
> On May 23, 2008, at 2:39 PM, Joshua D. Drake wrote:
>>
>> pg_ctl -D /path/to/data/dir -m fast stop
>>
> Does this do an orderly, safe stop? Also do I then bring it back up

> with the usual command?

"Three different shutdown methods can be selected with the -m option:
"Smart" mode waits for all the clients to disconnect. This is the
default. "Fast" mode does not wait for clients to disconnect. All
active transactions are rolled back and clients are forcibly
disconnected, then the server is shut down. "Immediate" mode will
abort all server processes without a clean shutdown. This will lead to
a recovery run on restart."

>From the docs:

http://www.postgresql.org/docs/8.2/interactive/app-pg-ctl.html

-Kevin


From: Carol Walter <walterc(at)indiana(dot)edu>
To: Jeff Frost <jeff(at)frostconsultingllc(dot)com>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 19:08:39
Message-ID: 8F6322F3-A686-4535-B30A-0925DC803B5C@indiana.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Jeff,

Thank you very much. I didn't know about this command. There are
lots of times this would have saved me looking it up in my
documentation. I've got a couple of different instances of postgres
running and I always have to check the docs to find out where my
config file is.

Well, the table I told everyone about yesterday won't let me run
pg_dump against it. My hesitancy comes from not knowing what the
result will be of dumping the other databases. I've had the
experience of dumping my "can of worms" out and not getting them back
in the same "can" when I was done with them. =)

Carol

On May 23, 2008, at 2:02 PM, Jeff Frost wrote:

> Carol Walter wrote:
>>
>> vacuumdb: vacuuming database "km"
>> NOTICE: number of page slots needed (2275712) exceeds
>> max_fsm_pages (200000)
>> HINT: Consider increasing the configuration parameter
>> "max_fsm_pages" to a value over 2275712.
>>
>> The problem is I've found the max_fsm_pages parameter in the
>> postgresql.conf file, but changing it doesn't seem to be having
>> any effect. So I'm going to ask some questions that are probably
>> pretty silly, but I hope you'll help me. First of all, perhaps
>> the postgresql.conf file that I am editing may not be the one that
>> is being read when the database server starts. There are several
>> postgresql.conf files on this system. How do I tell which one is
>> the one being read?
>>
> Carol,
>
> Do the following in psql:
>
> show config_file;
>
> You should get some output like so:
>
> config_file
> -------------------------------------
> /var/lib/pgsql/data/postgresql.conf
> (1 row)
>
> Go forth and edit that file. :-)
>> The max_fsm_pages parameter says what the minimum setting is in
>> the file. Is there also a maximum?
>>
> I'm not sure I understand the question. max_fsm_pages is the
> maximum number of pages to be used in the free space map. See Jim
> Nasby's article here: http://decibel.org/~decibel/pervasive/fsm.html
>> I can't back up my database with the error right now, because of
>> the error. I have a backup but I'm afraid to restore it. I feel
>> like I have many indices that are bloated and I want to get the
>> databases vacuumed before I start trying to create and load a new
>> database. I'm concerned that there won't be enough index space
>> for the system to sort and copy the indices.
> What's the error? All I see in this email is a warning about
> max_fsm_pages and that should not stop you from doing a pg_dump.
>
> --
> Jeff Frost, Owner <jeff(at)frostconsultingllc(dot)com>
> Frost Consulting, LLC http://www.frostconsultingllc.com/
> Phone: 650-780-7908 FAX: 650-649-1954
>


From: "Scott Marlowe" <scott(dot)marlowe(at)gmail(dot)com>
To: "Carol Walter" <walterc(at)indiana(dot)edu>
Cc: "Jeff Frost" <jeff(at)frostconsultingllc(dot)com>, pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 19:23:54
Message-ID: dcc563d10805231223n64368b1bh1e5de39a1850cd4c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

On Fri, May 23, 2008 at 1:08 PM, Carol Walter <walterc(at)indiana(dot)edu> wrote:
> Jeff,
>
> Thank you very much. I didn't know about this command. There are lots of
> times this would have saved me looking it up in my documentation. I've got
> a couple of different instances of postgres running and I always have to
> check the docs to find out where my config file is.
>
> Well, the table I told everyone about yesterday won't let me run pg_dump
> against it. My hesitancy comes from not knowing what the result will be of
> dumping the other databases. I've had the experience of dumping my "can of
> worms" out and not getting them back in the same "can" when I was done with
> them. =)

What error are you getting when you try to dump that table?


From: Carol Walter <walterc(at)indiana(dot)edu>
To: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>
Cc: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>, <pgsql-admin(at)postgresql(dot)org>
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 21:01:03
Message-ID: 7B88EF79-78A5-4476-8A54-7EA42042A727@indiana.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Hi, Again.

I tried this and got the same message. It is as follows:

-bash-3.00$ /opt/csw/postgresql/bin/pg_ctl -D /dbpdisk/postgres/
prod_823 -m fas
t stop
pg_ctl: PID file "/dbpdisk/postgres/prod_823/postmaster.pid" does not
exist
Is server running?

Are there other ideas?

Carol

This is the same error I got with the
On May 23, 2008, at 2:58 PM, Kevin Grittner wrote:

>>>> Carol Walter <walterc(at)indiana(dot)edu> wrote:
>> On May 23, 2008, at 2:39 PM, Joshua D. Drake wrote:
>>>
>>> pg_ctl -D /path/to/data/dir -m fast stop
>>>
>> Does this do an orderly, safe stop? Also do I then bring it back up
>
>> with the usual command?
>
> "Three different shutdown methods can be selected with the -m option:
> "Smart" mode waits for all the clients to disconnect. This is the
> default. "Fast" mode does not wait for clients to disconnect. All
> active transactions are rolled back and clients are forcibly
> disconnected, then the server is shut down. "Immediate" mode will
> abort all server processes without a clean shutdown. This will lead to
> a recovery run on restart."
>
> From the docs:
>
> http://www.postgresql.org/docs/8.2/interactive/app-pg-ctl.html
>
> -Kevin
>


From: Jeff Frost <jeff(at)frostconsultingllc(dot)com>
To: Carol Walter <walterc(at)indiana(dot)edu>
Cc: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>, "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>, pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 21:15:33
Message-ID: 483733F5.6020703@frostconsultingllc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Carol Walter wrote:
> Hi, Again.
>
> I tried this and got the same message. It is as follows:
>
> -bash-3.00$ /opt/csw/postgresql/bin/pg_ctl -D
> /dbpdisk/postgres/prod_823 -m fas
> t stop
> pg_ctl: PID file "/dbpdisk/postgres/prod_823/postmaster.pid" does not
> exist
> Is server running?
>
> Are there other ideas?

Carol, what does:

ps -ef | grep postgres

return?

If postgres is really running, there should be a postmaster process that
shows which directory it's using as the DATA directory. It'll look
something like this:

postgres 24080 1 0 09:49 ? 00:00:07 /usr/bin/postmaster -p
5432 -D /var/lib/pgsql/data

If there isn't a postmaster, it's possible someone started postgres with
the -D option directly.

If you have multiple postgres server's running on the same machine,
you'll see multiple postmasters.

BTW: What operating system is this running under? If linux, which
distribution?


From: Carol Walter <walterc(at)indiana(dot)edu>
To: Jeff Frost <jeff(at)frostconsultingllc(dot)com>
Cc: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>, "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>, pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 22:04:18
Message-ID: 4FAAB56B-864B-4B20-858A-4D5D0EA9E12E@indiana.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Hi, Jeff,

Here's the output from the command.

-bash-3.00$ ps -ef | grep post
postgres 9631 9629 0 Sep 24 ? 30:28 /opt/csw/
postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
postgres 9633 9629 0 Sep 24 ? 96:31 /opt/csw/
postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
postgres 9634 9629 0 Sep 24 ? 67:28 /opt/csw/
postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
postgres 9629 9396 0 Sep 24 ? 13:26 /opt/csw/
postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
postgres 12082 12029 0 17:57:06 pts/17 0:00 ps -ef
postgres 12029 3950 0 17:55:05 pts/17 0:00 -bash
postgres 12083 12029 0 17:57:06 pts/17 0:00 grep post

I running under Solaris 10. I don't have anything that looks exactly
like what you here, but the postgres has got to be running. I can go
in as the postgres user connect to different databases and select
data from them. This installation was loaded by my colleague using a
product called Blastwave hence the csw directories.

By the way, and not incidentally, thank you for the help.

Carol

On May 23, 2008, at 5:15 PM, Jeff Frost wrote:

> Carol Walter wrote:
>> Hi, Again.
>>
>> I tried this and got the same message. It is as follows:
>>
>> -bash-3.00$ /opt/csw/postgresql/bin/pg_ctl -D /dbpdisk/postgres/
>> prod_823 -m fas
>> t stop
>> pg_ctl: PID file "/dbpdisk/postgres/prod_823/postmaster.pid" does
>> not exist
>> Is server running?
>>
>> Are there other ideas?
>
> Carol, what does:
>
> ps -ef | grep postgres
>
> return?
>
> If postgres is really running, there should be a postmaster process
> that shows which directory it's using as the DATA directory. It'll
> look something like this:
>
> postgres 24080 1 0 09:49 ? 00:00:07 /usr/bin/postmaster
> -p 5432 -D /var/lib/pgsql/data
>
> If there isn't a postmaster, it's possible someone started postgres
> with the -D option directly.
>
> If you have multiple postgres server's running on the same machine,
> you'll see multiple postmasters.
>
> BTW: What operating system is this running under? If linux, which
> distribution?
>
>


From: Jeff Frost <jeff(at)frostconsultingllc(dot)com>
To: Carol Walter <walterc(at)indiana(dot)edu>
Cc: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>, "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>, pgsql-admin(at)postgresql(dot)org
Subject: Re: Continuing issues... Can't vacuum!
Date: 2008-05-23 22:18:49
Message-ID: 483742C9.6000906@frostconsultingllc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-admin

Carol Walter wrote:
> -bash-3.00$ ps -ef | grep post
> postgres 9631 9629 0 Sep 24 ? 30:28
> /opt/csw/postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
> postgres 9633 9629 0 Sep 24 ? 96:31
> /opt/csw/postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
> postgres 9634 9629 0 Sep 24 ? 67:28
> /opt/csw/postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
> postgres 9629 9396 0 Sep 24 ? 13:26
> /opt/csw/postgresql/bin/sparcv8/postgres -D /dbpdisk/postgres/prod_823
> postgres 12082 12029 0 17:57:06 pts/17 0:00 ps -ef
> postgres 12029 3950 0 17:55:05 pts/17 0:00 -bash
> postgres 12083 12029 0 17:57:06 pts/17 0:00 grep post
>
> I running under Solaris 10. I don't have anything that looks exactly
> like what you here, but the postgres has got to be running. I can go
> in as the postgres user connect to different databases and select data
> from them. This installation was loaded by my colleague using a
> product called Blastwave hence the csw directories.
>
> By the way, and not incidentally, thank you for the help.
Looks like pid 9629 is the parent of all of them, so if you simply:

kill 9629

they should all exit gracefully. You can check this with the same ps
command.

Then you should be able to: "pg_ctl -D /dbpdisk/postgres/prod_823 start"
as the postgres user to start it back up.

I think you might want to have a look at the /etc/init.d/postgresql (or
whatever the startup script is) because it doesn't look to be using
pg_ctl to start postgresql since the pid file was missing or ask your
colleague how it was started in the first place. I'm not sure on
Solaris if the ps output gets changed like it does in linux to reflect
the processes role. In linux those would probably look more like this:

postgres 2525 1 0 May02 ? 00:01:04 /usr/bin/postmaster -p
5432 -D /var/lib/pgsql/data
postgres 2649 2525 0 May02 ? 00:00:21 postgres: logger process
postgres 2662 2525 0 May02 ? 00:03:18 postgres: writer process
postgres 2663 2525 0 May02 ? 00:02:12 postgres: wal writer process
postgres 2664 2525 0 May02 ? 00:07:16 postgres: autovacuum
launcher process
postgres 2665 2525 0 May02 ? 00:04:56 postgres: stats
collector process

--
Jeff Frost, Owner <jeff(at)frostconsultingllc(dot)com>
Frost Consulting, LLC http://www.frostconsultingllc.com/
Phone: 650-780-7908 FAX: 650-649-1954